elasticsearch basic concepts

19
Elasticsearch  

Upload: katarina-caric

Post on 07-Jan-2016

10 views

Category:

Documents


0 download

DESCRIPTION

Presentation

TRANSCRIPT

Page 1: Elasticsearch basic concepts

7/17/2019 Elasticsearch basic concepts

http://slidepdf.com/reader/full/elasticsearch-basic-concepts 1/25

Elasticsearch

 

Page 2: Elasticsearch basic concepts

7/17/2019 Elasticsearch basic concepts

http://slidepdf.com/reader/full/elasticsearch-basic-concepts 2/25

Elasticsearch❏ Highly scalable open-source full-text search an

analytics engine

❏ Based on Apache LuceneTM

❏ JSON + RESTful

❏Wikipedia, Stack Overflow, GitHub, SoundCloud, Guardian... are using ES

Page 3: Elasticsearch basic concepts

7/17/2019 Elasticsearch basic concepts

http://slidepdf.com/reader/full/elasticsearch-basic-concepts 3/25

Basic ConceptsCluster, Nodes

Index, Type, Document, Field

Shards & Replicas

Mapping

Page 4: Elasticsearch basic concepts

7/17/2019 Elasticsearch basic concepts

http://slidepdf.com/reader/full/elasticsearch-basic-concepts 4/25

Cluster 

Page 5: Elasticsearch basic concepts

7/17/2019 Elasticsearch basic concepts

http://slidepdf.com/reader/full/elasticsearch-basic-concepts 5/25

Indexing 

Page 6: Elasticsearch basic concepts

7/17/2019 Elasticsearch basic concepts

http://slidepdf.com/reader/full/elasticsearch-basic-concepts 6/25

 

Page 7: Elasticsearch basic concepts

7/17/2019 Elasticsearch basic concepts

http://slidepdf.com/reader/full/elasticsearch-basic-concepts 7/25

Installing and runningcurl -L -O http://download.elasticsearch.org/PATH/TO/VERSION.zip

unzip elasticsearch-$VERSION.zip

cd elasticsearch-$VERSION

Settings: config/elasticsearch.yml (cluster.name, node.name)

./bin/elasticsearch

Page 8: Elasticsearch basic concepts

7/17/2019 Elasticsearch basic concepts

http://slidepdf.com/reader/full/elasticsearch-basic-concepts 8/25

Infocurl 'http://localhost:9200/?pretty'

{  "status" : 200,  "name" : "katarina_dev",  "cluster_name" : "elasticsearch_kat",  "version" : {  "number" : "1.7.1",  "build_timestamp" : "2015-07-29T09:54:16Z",  "build_snapshot" : false,  "lucene_version" : "4.10.4"  },

  "tagline" : "You Know, for Search"}

Page 9: Elasticsearch basic concepts

7/17/2019 Elasticsearch basic concepts

http://slidepdf.com/reader/full/elasticsearch-basic-concepts 9/25

Cluster healthGET _cluster/health

{  "cluster_name": "elasticsearch_kat",  "status": "yellow",  "timed_out": false,  "number_of_nodes": 1,  "number_of_data_nodes": 1,  "active_primary_shards": 16,

  "active_shards": 16,  "relocating_shards": 0,  "initializing_shards": 0,  "unassigned_shards": 16,  "delayed_unassigned_shards": 0,  "number_of_pending_tasks": 0,  "number_of_in_flight_fetch": 0}

Page 10: Elasticsearch basic concepts

7/17/2019 Elasticsearch basic concepts

http://slidepdf.com/reader/full/elasticsearch-basic-concepts 10/25

Sense 

Page 11: Elasticsearch basic concepts

7/17/2019 Elasticsearch basic concepts

http://slidepdf.com/reader/full/elasticsearch-basic-concepts 11/25

Analyzercurl -X POST "localhost:9200/3a2ilati" -d '{ "settings": {  "analysis": {  "analyzer": {  "3a2_analyzer": {

  "type": "arabic",  "stopwords": [ "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", " ","  ","  "," "," "," "," "," "," " ," " ," " ," " ],  "tokenizer": "whitespace",  }  }  }  }, "mappings": {  "articles": {  "_all": {  "analyzer": "3a2_analyzer"  },  "include_in_all": false,

  "properties": {  "id": {  "type": "long",  "index": "not_analyzed"  },

"short_title": {  "type": "string",  "analyzer": "3a2_analyzer"  },  "meta_keywords": {  "type": "string",  "enabled": false  },.....

Page 12: Elasticsearch basic concepts

7/17/2019 Elasticsearch basic concepts

http://slidepdf.com/reader/full/elasticsearch-basic-concepts 12/25

Insert dataPUT /website/blog/123

{  "title": "My first blog entry",

  "text":  "Just trying this out...",

  "date":  "2015/09/09"

}

response:

{

  "_index":  "website",  "_type":  "blog",

  "_id":  "123",

  "_version":  1,

  "created":  true

}

Page 13: Elasticsearch basic concepts

7/17/2019 Elasticsearch basic concepts

http://slidepdf.com/reader/full/elasticsearch-basic-concepts 13/25

Get dataGET /website/blog/123?pretty

{  "_index" :  "website",

  "_type" :  "blog",

  "_id" :  "123",

  "_version" : 1,

  "found" :  true,

  "_source" :  {

  "title": "My first blog entry",

  "text":  "Just trying this out...",

  "date":  "2015/09/09"

  }

}

part of a document: GET /website/blog/123?_source=title,text

just source: GET /website/blog/123/_source

Page 14: Elasticsearch basic concepts

7/17/2019 Elasticsearch basic concepts

http://slidepdf.com/reader/full/elasticsearch-basic-concepts 14/25

Multi-index, Multitype/_search

Search all types in all indices

/gb/_searchSearch all types in the gb index

/gb,us/_search

Search all types in the gb and us indices

/g*,u*/_search

Search all types in any indices beginning with g or beginning with u

/gb/user/_search

Search type user in the gb index

/gb,us/user,tweet/_search

Search types user and tweet in the gb and us indices

/_all/user,tweet/_search

Search types user and tweet in all indices

Page 15: Elasticsearch basic concepts

7/17/2019 Elasticsearch basic concepts

http://slidepdf.com/reader/full/elasticsearch-basic-concepts 15/25

Search Litequery-string  version that expects all its parameters to be passed in the query string

GET /website/blog/_search

GET /website/blog/_search?q=title:elasticsearch

Page 16: Elasticsearch basic concepts

7/17/2019 Elasticsearch basic concepts

http://slidepdf.com/reader/full/elasticsearch-basic-concepts 16/25

Search with Query DSLThe domain-specific language (DSL) is specified using a JSON request body

GET /website/blog/_search

{

  "match" : {

  "title" : "elasticsearch"

  }

}

Page 17: Elasticsearch basic concepts

7/17/2019 Elasticsearch basic concepts

http://slidepdf.com/reader/full/elasticsearch-basic-concepts 17/25

Validate queryGET /website/blog/_validate/query?explain

Page 18: Elasticsearch basic concepts

7/17/2019 Elasticsearch basic concepts

http://slidepdf.com/reader/full/elasticsearch-basic-concepts 18/25

FiltersGET /megacorp/employee/_search

{"query" : {"filtered" : {

"filter" : {"range" : {

"age" : { "gt" : 30 }}

},"query" : {

"match" : {"last_name" : "smith"}

}}

  }}

Page 19: Elasticsearch basic concepts

7/17/2019 Elasticsearch basic concepts

http://slidepdf.com/reader/full/elasticsearch-basic-concepts 19/25

Full-Text SearchGET /megacorp/employee/_search

{"query" : {

"match" : {

"about" : "rock climbing"

}

}

}

Page 20: Elasticsearch basic concepts

7/17/2019 Elasticsearch basic concepts

http://slidepdf.com/reader/full/elasticsearch-basic-concepts 20/25

Phrase SearchGET /megacorp/employee/_search

{

  "query" : {

  "match_phrase" : {

  "about" : "rock climbing"

  }

  }

}

Page 21: Elasticsearch basic concepts

7/17/2019 Elasticsearch basic concepts

http://slidepdf.com/reader/full/elasticsearch-basic-concepts 21/25

HighlightingGET /megacorp/employee/_search

{

  "query" : {

  "match_phrase" : {

  "about" : "rock climbing"

  }

  },

  "highlight": {

  "fields" : {

  "about" : {}

  }

  }

}

Page 22: Elasticsearch basic concepts

7/17/2019 Elasticsearch basic concepts

http://slidepdf.com/reader/full/elasticsearch-basic-concepts 22/25

Bool QueriesOccurrence types:

● must● should  

● must_not

GET /my_index/my_type/_search

{

  "query": {

  "bool": {

  "should": [  { "match": { "title": "brown" }},

  { "match": { "title": "fox"  }},

  { "match": { "title": "dog"  }}

  ],

  "minimum_should_match": 2 

}

  }

}

Page 23: Elasticsearch basic concepts

7/17/2019 Elasticsearch basic concepts

http://slidepdf.com/reader/full/elasticsearch-basic-concepts 23/25

Combining QueriesGET /my_index/my_type/_search

{

  "query": {

  "bool": {

  "must":  { "match": { "title": "quick" }},

  "must_not": { "match": { "title": "lazy"  }},

  "should": [

  { "match": { "title": "brown" }},

  { "match": { "title": "dog"  }}

  ]

  }

  }

}

Page 24: Elasticsearch basic concepts

7/17/2019 Elasticsearch basic concepts

http://slidepdf.com/reader/full/elasticsearch-basic-concepts 24/25

Bulk API{action_and_meta_data}\n

{optional_data_source}\n{action_and_meta_data}\n{optional_data_source}\n

Actions:

●   create  (Create a document only if the document does not already exist)

●   index (Create a new document or replace an existing document)●   update (Do a partial update on a document)

●   delete (Delete a document)

Page 25: Elasticsearch basic concepts

7/17/2019 Elasticsearch basic concepts

http://slidepdf.com/reader/full/elasticsearch-basic-concepts 25/25

Import some datahttps://www.elastic.co/guide/en/kibana/3.0/import-some-data.ht

https://www.elastic.co/guide/en/kibana/3.0/snippets/shakespeare

curl -XPUT localhost:9200/_bulk --data-binary @shakespeare.json