多索引组合查询(官方文档)

如果不对某一特殊的索引做限制,就会搜索集群中的所有文档。Elasticsearch 转发搜索请求到每一个主分片或者副本分片,汇集查询出的前10个结果,并且返回给我们。

然而,经常的情况下,你想在一个或多个特殊的索引并且在一个或者多个特殊的类型中进行搜索。我们可以通过在URL中指定特殊的索引和类型达到这种效果,如下所示:

  • /_search
    1
    在所有的索引中搜索所有的类型
  • /gb/_search
    1
    在 gb 索引中搜索所有的类型
  • /gb,us/_search
    1
    在 gb 和 us 索引中搜索所有的文档(明确指定多个索引名称,这种方式一般应用在非常精确的查询场景下,便于查询索引范围,性能平衡考虑,若索引不存在会出现错误)
  • /g*,u*/_search
    1
    在任何以 g 或者 u 开头的索引中搜索所有的类型(不限定死索引名称,这种方式一般采用通配符,无需判断该索引是否存在,支持前匹配、后匹配,前后匹配)
  • /gb/user/_search
    1
    在 gb 索引中搜索 user 类型
  • /gb,us/user,tweet/_search
    1
    在 gb 和 us 索引中搜索 user 和 tweet 类型
  • /_all/user,tweet/_search
    1
    在所有的索引中搜索 user 和 tweet 类型
  • /index-%7Bnow%2Fd%7D/_search
    1
    2
    索引名称通过计算表达式指定,类似正则表达式,也可以同时指定多个索引,如下:logstash-{now/d}表示当前日期
    索引名称如:index-2024.03.22

当在单一的索引下进行搜索的时候,Elasticsearch 转发请求到索引的每个分片中,可以是主分片也可以是副本分片,然后从每个分片中收集结果。多索引搜索恰好也是用相同的方式工作的—只是会涉及到更多的分片。

搜索一个索引有五个主分片和搜索五个索引各有一个分片准确来所说是等价的。