一.字符串查询(query string search)
1.全搜索
timeout参数:是超时时长定义。代表每个节点上的每个shard执行搜索时最多耗时多久。不会影响响应的正常返回。只会影响返回响应中的数据数量。
GET [索引名/类型名/]_search?timeout=10ms
结果:
{
"took": 144, #请求耗时多少毫秒
"timed_out": false, #是否超时。默认情况下没有超时机制,也就是客户端等待Elasticsearch搜索结束(无论执行多久),提供超时机制的话,Elasticsearch则在指定时长内处理搜索,在指定时长结束的时候,将搜索的结果直接返回(无论是否搜索结束)。指定超时的方式是传递参数,参数单位是:毫秒-ms。秒-s。分钟-m。
"_shards": {
"total": 1, #请求发送到多少个shard上
"successful": 1,#成功返回搜索结果的shard
"skipped": 0, #停止服务的shard
"failed": 0 #失败的shard
},
"hits": {
"total": 1, #返回了多少结果
"max_score": 1, #搜索结果中,最大的相关度分数,相关度越大分数越高,_score越大,排位越靠前。
"hits": [ #搜索到的结果集合,默认查询前10条数据。
{
"_index": "test_index", #数据所在索引
"_type": "test_type", #数据所在类型
"_id": "1", #数据的id
"_score": 1, #数据的搜索相关度分数
"_source": { # 数据的具体内容。
"field": "value"
}
}
]
}
}
2.multi index搜索
所谓的multi-index就是从多个index中搜索数据。相对使用较少,只有在复合数据搜索的时候,可能出现。一般来说,如果真使用复合数据搜索,都会使用_all。
如:搜索引擎中的无条件搜索。(现在的应用中都被屏蔽了。使用的是默认搜索条件,执行数据搜索。 如: 电商中的搜索框默认值, 搜索引擎中的类别)
无条件搜索,在搜索应用中称为“魔鬼搜索”,代表的是,搜索引擎会执行全数据检索,效率极低,且对资源有非常高的压力。
GET 索引名/_search?q=字段名:搜索条件
示例:get test_search/test_type/_search?q=eage:26
对搜索条件为中文支持不友好。
3.分页搜索
默认情况下,Elasticsearch搜索返回结果是10条数据。从第0条开始查询。
size和from是es中具有特定含义的属性名。
语法:
GET 索引名/_search?size=10 # size查询数据的行数
GET 索引名/_search?from=0&size=10 # from 从第几行开始查询,行号从0开始。
4.+/-搜索
GET 索引名/_search?q=字段名:条件
GET 索引名/_search?q=+字段名:条件
GET 索引名/_search?q=-字段名:条件
- :和不定义符号含义一样,就是搜索指定的字段中包含key words的数据
- : 与+符号含义相反,就是搜索指定的字段中不包含key words的数据
5.排序
GET test_search/_search?sort=eage:asc
GET test_search/_search?sort=eage:desc