[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"
}
}
]
}
}