Elasticsearch中的多索引、多类型搜索

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

如下:

localhost:9200/_search
{
    "took": 67,
    "timed_out": false,
    "_shards": {
        "total": 5,
        "successful": 5,
        "skipped": 0,
        "failed": 0
    },
    "hits": {
        "total": 4,
        "max_score": 1.0,
        "hits": [
            {
                "_index": "store",
                "_type": "base",
                "_id": "2553608",
                "_score": 1.0,
                "_source": {}
            },
            {
                "_index": "store",
                "_type": "base",
                "_id": "255387",
                "_score": 1.0,
                "_source": {}
            },
            {
                "_index": "store",
                "_type": "base",
                "_id": "255449",
                "_score": 1.0,
                "_source": {}
            },
            {
                "_index": "store",
                "_type": "base",
                "_id": "255388",
                "_score": 1.0,
                "_source": {}
            }
        ]
    }
}

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

/_search

在所有的索引中搜索所有的类型

/gb/_search

gb 索引中搜索所有的类型

/gb,us/_search

gbus 索引中搜索所有的文档

/g*,u*/_search

在任何以 g 或者 u 开头的索引中搜索所有的类型

/gb/user/_search

gb 索引中搜索 user 类型

/gb,us/user,tweet/_search

gbus 索引中搜索 usertweet 类型

/_all/user,tweet/_search

在所有的索引中搜索 usertweet 类型

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

需要注意的是:搜索一个索引有五个主分片和搜索五个索引各有一个分片准确来说是等价的。


除非注明,否则均为李锋镝的博客原创文章,转载必须以链接形式标明本文链接

本文链接:https://www.lifengdi.com/archives/article/1366

分享到:
订阅
提醒
guest
0 评论
Inline Feedbacks
查看所有评论