说明
除explain查询外,Elasticsearch的查询基本都可以跨区域。
采用简式写法(完整写法:curl -XGET ‘localhost:9200/index/type/id’)
圈定shard范围
执行搜索的时候,elasticsearch会全局广播查询。
可以通过指定 routing 的值来圈定shard范围。
(1)指定 routing 插入
POST /twitter/tweet?routing=kimchy
{
"user" : "kimchy",
"postDate" : "2009-11-15T14:12:12",
"message" : "trying out Elasticsearch"
}
(2)指定 routing 查询
可同时指定多个 routing ,只需用逗号分割即可。
POST /twitter/tweet/_search?routing=kimchy
{
"query": {
"bool" : {
"must" : {
"query_string" : {
"query" : "some query string here"
}
},
"filter" : {
"term" : { "user" : "kimchy" }
}
}
}
}
搜索并分组
搜索并实现分组。
POST /_search
{
"query" : {
"match_all" : {}
},
"stats" : ["group1", "group2"]
}
无限定查询
1、未指定type查询
GET /twitter/_search?q=user:kimchy
2、指定多type查询
GET /twitter/tweet,user/_search?q=user:kimchy
3、未指定index查询
GET /_all/tweet/_search?q=tag:wow
4、指定多index查询
GET /kimchy,elasticsearch/tweet/_search?q=tag:wow
5、未指定index以及type查询
GET /_search?q=tag:wow
搜索超时
elasticsearch可设置全局搜索超时。
默认情况下是无超时限制的。
设置 search.default_search_timeout 全局搜索超时时长,设为 -1 恢复超时无限制。
搜索取消
(这里直翻,不是很懂,需要继续研究看看)
通过标准的任务取消机制是可以取消搜索操作的。
默认情况下,搜索任务是否取消检查通常在段尾,所以碰到大的节段,它就会延迟。
通过设置 search.low_level_cancellation 为 true 来提高搜索任务检查的等级,但是会影响性能。