Elasticsearch multi-index 搜索
Elasticsearch multi-index search, Boost index 和 Multi-target syntax,文字内容来自 B 站中华石杉 Elasticsearch 高手进阶课程,英文内容来自官方文档。
如何一次性搜索多个 index 和多个 type 下的数据
/_search:所有索引,所有 type 下的所有数据都搜索出来
/index1/_search:指定一个 index,搜索其下所有 type 的数据
/index1,index2/_search:同时搜索两个 index 下的数据
/*1,*2/_search:按照通配符去匹配多个索引
因为 type 在新版的 Elasticsearch 中已经被弃用了,所以后面这几条就没有意义了。
/index1/type1/_search:搜索一个 index 下指定的 type 的数据
/index1/type1,type2/_search:可以搜索一个 index 下多个 type 的数据
/index1,index2/type1,type2/_search:搜索多个 index 下的多个 type 的数据
/_all/type1,type2/_search:_all,可以代表搜索所有 index 下的指定 type 的数据
搜索原理初步解释
Client 发送一个搜索请求,会把请求发送到所有的 Primary Shard 上去执行,因为每个 Shard 都包含部分数据,所以每个 Shard 上都可能会包含搜索请求的结果。
但是如果 Primary Shard 有 Replica Shard,那么请求也可以发送到 Replica Shard 上。
Index boost
When searching multiple indices, you can use the indices_boost parameter to boost results from one or more specified indices. This is useful when hits coming from some indices matter more than hits from other.
Multi-target syntax
Most APIs that accept a <data-stream>, <index>, or <target> request path parameter also support multi-target syntax.
In multi-target syntax, you can use a comma-separated list to run a request on multiple resources, such as data streams, indices, or index aliases: test1,test2,test3. You can also use glob-like wildcard () expressions to target resources that match a pattern: test or *test or te*t or test.
You can exclude targets using the - character: test*,-test3.
版权声明: 本文为 InfoQ 作者【escray】的原创文章。
原文链接:【http://xie.infoq.cn/article/7581a83e0dbb45cc307dfb0a4】。
本文遵守【CC-BY 4.0】协议,转载请保留原文出处及本版权声明。
评论