[toc]
Search API概览
1. Search API分两种
- URI Search: 在URI中应用查问参数
Request Body Search: 应用ES提供的,基于JSON格局的更加齐备的DSL:
Query Domain Specific Language 查问畛域特定语言
2. 指定查问的索引
语法 | 范畴 |
---|---|
/_search | 集群上的所有index |
/index1/_search | index1上查问 |
/index1,index2/_search | index1和index2 |
/index*/_search | 通配符匹配:index结尾的索引名相干的索引上查问 |
3. 查问数据筹备:ES中的users
index里的数据一览
_index | _type | _id | ▲_score | name | age | gender | birth |
---|---|---|---|---|---|---|---|
users | _doc | 1 | 1 | niewj | 36 | male | 1985-01-01 |
users | _doc | 3 | 1 | lifubo | 33 | male | |
users | _doc | 4 | 1 | weibinbin | 32 | male | |
users | _doc | 2 | 1 | nie | 26 | male | 1995-02-02 |
4. URI查问
4.1 curl形式在命令行
应用"q", 指定查问字符串; "query string syntax", KV键值对:
curl -XGET --user username:password "http://localhost:9200/users/_search?q=name:nie"
后果:
{ "took": 4, "timed_out": false, "_shards": { "total": 1, "successful": 1, "skipped": 0, "failed": 0 }, "hits": { "total": { "value": 1, "relation": "eq" }, "max_score": 0.87546873, "hits": [ { "_index": "users", "_type": "_doc", "_id": "2", "_score": 0.87546873, "_source": { "name": "nie", "age": 26, "gender": "male", "birth": "1995-02-02" } } ] }}
4.2 在kibana DevTools里:
GET /users/_search?q=name:nie
后果:
{ "took" : 0, "timed_out" : false, "_shards" : { "total" : 1, "successful" : 1, "skipped" : 0, "failed" : 0 }, "hits" : { "total" : { "value" : 1, "relation" : "eq" }, "max_score" : 0.87546873, "hits" : [ { "_index" : "users", "_type" : "_doc", "_id" : "2", "_score" : 0.87546873, "_source" : { "name" : "nie", "age" : 26, "gender" : "male", "birth" : "1995-02-02" } } ] }}
5.Request Body Search
反对 GET
、POST
5.1 curl形式在命令行
curl -XGET --user username:password "http://localhost:9200/users/_search" -H 'Content-Type:application/json' -d '{"query":{"match":{"name":"nie"}}}'
- username:替换成本人的用户名
- password:替换成本人的明码
后果:
{ "took": 0, "timed_out": false, "_shards": { "total": 1, "successful": 1, "skipped": 0, "failed": 0 }, "hits": { "total": { "value": 1, "relation": "eq" }, "max_score": 0.87546873, "hits": [ { "_index": "users", "_type": "_doc", "_id": "2", "_score": 0.87546873, "_source": { "name": "nie", "age": 26, "gender": "male", "birth": "1995-02-02" } } ] }}
5.2 在kibana DevTools里
GET /users/_search{ "query": { "match": { "name": "nie" } }}
后果
{ "took" : 0, "timed_out" : false, "_shards" : { "total" : 1, "successful" : 1, "skipped" : 0, "failed" : 0 }, "hits" : { "total" : { "value" : 1, "relation" : "eq" }, "max_score" : 0.87546873, "hits" : [ { "_index" : "users", "_type" : "_doc", "_id" : "2", "_score" : 0.87546873, "_source" : { "name" : "nie", "age" : 26, "gender" : "male", "birth" : "1995-02-02" } } ] }}