Elasticsearch Basic Concepts
Elasticsearch Basic Concepts
Elasticsearch
JSON + RESTful
Basic Concepts
Cluster, Nodes
Index, Type, Document, Field
Shards & Replicas
Mapping
Cluster
Indexing
Info
curl '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"
}
Cluster health
GET _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
}
Sense
Analyzer
curl -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
},.....
Insert data
PUT /website/blog/123
{
"title": "My first blog entry",
"text": "Just trying this out...",
"date": "2015/09/09"
}
response:
{
"_index":
"_type":
"_id":
"_version":
"created":
}
"website",
"blog",
"123",
1,
true
Get data
GET /website/blog/123?pretty
{
"_index" :
"_type" :
"_id" :
"_version" :
"found" :
"_source" :
"title":
"text":
"date":
}
"website",
"blog",
"123",
1,
true,
{
"My first blog entry",
"Just trying this out...",
"2015/09/09"
}
part of a document: GET /website/blog/123?_source=title,text
just source: GET /website/blog/123/_source
Multi-index, Multitype
/_search
Search all types in all indices
/gb/_search
Search 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
Search Lite
query-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
Validate query
GET /website/blog/_validate/query?explain
Filters
GET /megacorp/employee/_search
{
"query" : {
"filtered" : {
"filter" : {
"range" : {
"age" : { "gt" : 30 }
}
},
"query" : {
"match" : {
"last_name" : "smith"
}
}
}
}
}
Full-Text Search
GET /megacorp/employee/_search
{
"query" : {
"match" : {
"about" : "rock climbing"
}
}
}
Phrase Search
GET /megacorp/employee/_search
{
"query" : {
"match_phrase" : {
"about" : "rock climbing"
}
}
}
Highlighting
GET /megacorp/employee/_search
{
"query" : {
"match_phrase" : {
"about" : "rock climbing"
}
},
"highlight": {
"fields" : {
"about" : {}
}
}
}
Bool Queries
Occurrence types:
must
should
must_not
GET /my_index/my_type/_search
{
"query": {
"bool": {
"should": [
{ "match": { "title":
{ "match": { "title":
{ "match": { "title":
],
"minimum_should_match":
}
}
}
"brown" }},
"fox"
}},
"dog"
}}
2
Combining Queries
GET /my_index/my_type/_search
{
"query": {
"bool": {
"must":
{ "match":
"must_not": { "match":
"should": [
{ "match":
{ "match":
]
}
}
}
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)