先说明一下,低版本的 ES 一个 index 是支持多 type 的,所以就有 multi-type 这一种搜索模式,这里不做详细讲解,因为和 multi-index 搜索模式是基本一样的。而且高版本的 ES 会弃用 type。
1、multi-index 搜索模式
/_search: 所有索引下的所有数据都搜索出来
GET /_search
/{index}/_search:指定一个 index, 搜索这个索引下的所有数据
GET /test/_search
/index1,index2/_search: 同时搜索两个索引下的数据
GET /test_index,test/_search
/1,2/_search: 通过通配符匹配多个索引,查询多个索引下的数据
GET /test*/_search
/_all/_search: 代表所有的 index
GET /_all/_search
2、搜索原理浅析
当客户端发送查询请求到 ES 时,会把请求打到所有的 primary shard 上去执行,因为每个 shard 都包含部分数据,所有每个 shard 都可能会包含搜索请求的结果,但是如果 primary shard 有 replica shard,那么请求也可以打到 replica shard 上去。
如下图所示: