本文總結ElasticSearch的一些經常使用命令和用法,會長期更新,但願對你們有所幫助。json
curl -X PUT 'localhost:9200/accounts' -H 'Content-Type: application/json' -d' { "mappings": { "person": { "properties": { "last_name": { "type": "text" }, "first_name": { "type": "text" }, "sex": { "type": "keyword" }, "age": { "type": "integer" }, "city": { "type": "keyword" }, "comment": { "type": "text" } } } } }'
curl -XPOST http://localhost:9200/accounts/person/1/ -d ' { "last_name": "wang", "first_name": "kenny", "sex": "male", "age": 35, "city": "hangzhou", "comment": "kenny works for apbtour. " }' curl -XPOST http://localhost:9200/accounts/person/2 -d ' { "last_name": "wang", "first_name": "bob", "sex": "male", "age": 40, "city": "shanghai", "comment": "bob works for apbtour. " }' curl -XPOST http://localhost:9200/accounts/person/3 -d ' { "last_name": "tao", "first_name": "jialin", "sex": "female", "age": 34, "city": "hangzhou", "comment": "jialin works in hangzhou. " }' curl -XPOST http://localhost:9200/accounts/person/4 -d ' { "last_name": "jiang", "first_name": "jockey", "sex": "male", "age": 30, "city": "shanghai", "comment": "jockey works for apbtour. " }' curl -XPOST http://localhost:9200/accounts/person/5 -d ' { "last_name": "yue", "first_name": "qun", "sex": "female", "age": 29, "city": "shanghai", "comment": "yue qun does not works for apbtour. " }'
當前索引數據以下:bash
http://localhost:9200/accounts/person/_search?q=last_name:wang GET
curl -XGET 'localhost:9200/accounts/person/_search?pretty' -d '{ "query": { "term": { "last_name": "wang" } } }'
curl -XPOST 'localhost:9200/accounts/person/_search?pretty' -d ' { "query": { "match_all": {} }, "_source": ["last_name", "first_name"] }'
如下語句顯示第3 - 5條記錄app
curl -XPOST 'localhost:9200/accounts/person/_search?pretty' -d ' { "query": { "match_all": {} }, "from": 2, "size": 3 }'
curl -XGET 'localhost:9200/accounts/person/_search?pretty' -d '{ "query": { "terms": { "_id": ["1","4"] } } }'
curl -XPUT 'localhost:9200/accounts/person/1' -H 'Content-Type: application/json' -d ' { "last_name" : "Wang", "first_name" : "fanggang" }'
curl -X DELETE 'localhost:9200/accounts/person/7'
curl -XPOST 'localhost:9200/accounts/person/_search?pretty' -d ' { "query": { "match": { "last_name": "wang" } } }'
AND
類型搜索curl -XPOST 'localhost:9200/accounts/person/_search?pretty' -d ' { "query": { "bool": { "must": [ { "match": { "last_name": "wang" } }, { "match": { "first_name": "fanggang" } } ] } } }'
OR
類型搜索curl -XPOST 'localhost:9200/accounts/person/_search?pretty' -d ' { "query": { "bool": { "should": [ { "match": { "last_name": "wang" } }, { "match": { "sex": "male" } } ] } } }'
curl -XPOST 'localhost:9200/accounts/person/_search?pretty' -d ' { "query": { "bool": { "must_not": [ { "match": { "last_name": "wang" } }, { "match": { "last_name": "yue" } }, { "match": { "last_name": "kan" } } ] } } }'
curl -XPOST 'localhost:9200/accounts/person/_search?pretty' -d ' { "query": { "bool": { "must": [ { "match": { "last_name": "wang" } } ], "must_not": [ { "match": { "first_name": "bob" } } ] } } }'
查詢年齡在32 - 35歲之間的人。curl
curl -XPOST 'localhost:9200/accounts/person/_search?pretty' -d ' { "query": { "bool": { "must": { "match_all": {} }, "filter": { "range": { "age": { "gte": 32, "lte": 35 } } } } } }'
Count ... group by
類型聚合查詢curl -XPOST 'localhost:9200/accounts/person/_search?pretty' -d ' { "size": 0, "aggs": { "group_by_city": { "terms": { "field": "city" } } } }'
因爲size設置爲0,它並無返回文檔的信息,只是返回了聚合的結果。url
curl -XPOST 'localhost:9200/accounts/person/_search?pretty' -d ' { "size": 0, "aggs": { "group_by_city": { "terms": { "field": "city" }, "aggs": { "average_age": { "avg": { "field": "age" } } } } } }'
結果以下:spa
例如:先按年齡範圍分組,再統計不一樣地域的平均年齡:code
curl -XPOST 'localhost:9200/accounts/person/_search?pretty' -d ' { "size": 0, "aggs": { "group_by_age": { "range": { "field": "age", "ranges": [ { "from": 20, "to": 30 }, { "from": 31, "to": 40 } ] }, "aggs": { "group_by_city": { "terms": { "field": "city" }, "aggs": { "average_age": { "avg": { "field": "age" } } } } } } } }'
結果以下:blog
{ "took" : 8, "timed_out" : false, "_shards" : { "total" : 5, "successful" : 5, "failed" : 0 }, "hits" : { "total" : 5, "max_score" : 0.0, "hits" : [ ] }, "aggregations" : { "group_by_age" : { "buckets" : [ { "key" : "20.0-30.0", "from" : 20.0, "to" : 30.0, "doc_count" : 1, "group_by_city" : { "doc_count_error_upper_bound" : 0, "sum_other_doc_count" : 0, "buckets" : [ { "key" : "shanghai", "doc_count" : 1, "average_age" : { "value" : 29.0 } } ] } }, { "key" : "31.0-40.0", "from" : 31.0, "to" : 40.0, "doc_count" : 2, "group_by_city" : { "doc_count_error_upper_bound" : 0, "sum_other_doc_count" : 0, "buckets" : [ { "key" : "hangzhou", "doc_count" : 2, "average_age" : { "value" : 34.5 } } ] } } ] } } }
以上是ElasticSearch一些基本操做,本文檔後續會持續更新,敬請關注。索引