多索引和多类别
你注意到空搜索的结果中不同类型的文档——user
和tweet
——来自于不同的索引——us
和gb
。
通过限制搜索的不同索引或类型,我们可以在集群中跨所有文档搜索。Elasticsearch转发搜索请求到集群中平行的主分片或每个分片的复制分片上,收集结果后选择顶部十个返回给我们。
通常,当然,你可能想搜索一个或几个自定的索引或类型,我们能通过定义URL中的索引或类型达到这个目的,像这样:
/_search
在所有索引的所有类型中搜索
/gb/_search
在索引gb
的所有类型中搜索
/gb,us/_search
在索引gb
和us
的所有类型中搜索
/g*,u*/_search
在以g
或u
开头的索引的所有类型中搜索
/gb/user/_search
在索引gb
的类型user
中搜索
/gb,us/user,tweet/_search
在索引gb
和us
的类型为user
和tweet
中搜索
/_all/user,tweet/_search
在所有索引的user
和tweet
中搜索
search types user
and tweet
in all indices
当你搜索包含单一索引时,Elasticsearch转发搜索请求到这个索引的主分片或每个分片的复制分片上,然后聚集每个分片的结果。搜索包含多个索引也是同样的方式——只不过或有更多的分片被关联。
重要
搜索一个索引有5个主分片和5个索引各有一个分片事实上是一样的。
接下来,你将看到这些简单的情况如何灵活的扩展以适应你需求的变更。