多索引,多类型
你是否注意到了《空白搜索》一章节的文档中包含了很多不同的类型 —— user
与tweet
,它们也分别来自us
、gb
这两个不同的索引?
当我们没有特别指定一个索引或者类型的时候,我们将会搜索整个集群中的所有文档。Elasticsearch会把搜索请求转发给集群中的每一个主从分片,然后按照结果的相关性得到前十名,并将它们返回给我们。
然而,往往我们只需要在某一个特定的索引的几个类型中进行搜索。我们可以通过在URL中定义它来实现这个功能:
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 内的所有文档 |
当你在一个索引中搜索的时候,Elasticsearch或将你的搜索请求转发给相应索引中的所有主从分片,然后收集每一个分片的结果。在多个索引中搜索也是相同的流程,只不过是增加了一些参与分片。
重要提示
搜索一个拥有五个主分片的索引与搜索五个都只拥有一个主分片是完全一样的。
在后面,你将会了解到如何利用这一点,来根据你的需要灵活打造系统。