Search APIs - shuiyuebingdian/ElasticSearch GitHub Wiki
搜索API
除Explain API端点外,大多数搜索API都是多索引,多类型的。
路由
执行搜索时,它将广播到所有索引/索引分片(副本之间的循环)。可以通过提供routing参数来控制要搜索哪些分片。例如,在为推特编制索引时,路由值可以是用户名:
POST /twitter/tweet?routing=kimchy
{
"user" : "kimchy",
"postDate" : "2009-11-15T14:12:12",
"message" : "trying out Elasticsearch"
}
在这种情况下,如果我们只想搜索特定用户的推文,则可以将其指定为路由,从而使搜索仅触及相关的分片:
POST /twitter/tweet/_search?routing=kimchy
{
"query": {
"bool" : {
"must" : {
"query_string" : {
"query" : "some query string here"
}
},
"filter" : {
"term" : { "user" : "kimchy" }
}
}
}
}
路由参数可以是多值形式,用逗号分隔的字符串表示。这将导致命中与路由值匹配的相关分片。
统计组
搜索可以与统计信息组相关联,从而维护每个组的统计信息汇总。以后可以使用indexs stats API专门检索它 。例如,这是一个搜索主体请求,将请求与两个不同的组相关联:
POST /_search
{
"query" : {
"match_all" : {}
},
"stats" : ["group1", "group2"]
}
全局搜索超时
个别搜索在请求正文搜索中可能会有超时 。由于搜索请求可以源自许多来源,因此Elasticsearch具有全局搜索超时的动态集群级别设置,该设置适用于所有未在“ 请求正文搜索”中设置超时的搜索请求。默认值为无全局超时。search.default_search_timeout可以使用“ 群集更新设置”端点来设置该设置密钥。设置此值以-1将全局搜索超时重置为无超时。
搜索取消
可以使用标准任务取消 机制来取消搜索。默认情况下,运行中的搜索仅检查是否在段边界上被取消,因此大段可能会延迟取消。通过将动态集群级别设置设置search.low_level_cancellation为,可以提高搜索取消的响应速度true。但是,它带来了更频繁的取消检查的额外开销,这在大型快速运行的搜索查询中会很明显。更改此设置仅影响更改后开始的搜索。