Search APIs - shuiyuebingdian/ElasticSearch GitHub Wiki

Search APIs

搜索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。但是,它带来了更频繁的取消检查的额外开销,这在大型快速运行的搜索查询中会很明显。更改此设置仅影响更改后开始的搜索。