Elasticsearch 通过多个索引上的 uid 获取多个文档

标签 elasticsearch

之前的设置是一种类型的所有文档都在同一个索引中。但是由于类型的不同形式(概念上),并且出于备份目的,我需要单个类型的多个索引。

它们都将采用_feed 形式。虽然此设置在某些情况下很棒,但对于

client.prepareGet(index, typename, ids).execute().actionGet(); // works great if you know in which index to search

它没有用,因为不能使用通配符。我能做的是使用多个多重获取并交错结果。这会产生我想要的结果,但会显着增加查询量。
假设我肯定知道,给定索引只存在一个文档,有没有比为每个可能的索引在所有 _uids 上调用 multiget 更好的查询方法?

最佳答案

最好的方法是在您的应用程序中开发一种机制,允许您从 id 推断索引名称。但假设这是不可能的或不切实际的,你几乎只有两个选择。如果您需要实时获取,那么您的方法是唯一的方法。如果不需要实时获取,您可以使用 ids filter 对所有索引执行搜索。 .如果 id 列表很小,您可以从使用 routing 中受益。在您的搜索查询中。这样,搜索请求只会被分派(dispatch)到可能包含查询中列出的任何 id 的分片。但是,如果 id 列表足够大以跨越大多数分片,它不会提供任何好处。

关于Elasticsearch 通过多个索引上的 uid 获取多个文档,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32329233/

相关文章:

elasticsearch - Elasticsearch索引恢复

elasticsearch - Couchbase-Elasticsearch-运输。映射到类型

linux - 我正在尝试在终端中 curl X Post,但我的文件太大

elasticsearch - Elastica多项搜索未返回正确结果

sorting - Elasticsearch按嵌套对象排序

elasticsearch - elasticsearch ID 必须对类型或索引是唯一的吗?

elasticsearch - 如何在ElasticSearch中识别丢失的文档?

node.js - 富文档的MongoDB全文搜索

ruby-on-rails-4 - Searchkick 在指定字段时不搜索多个术语

elasticsearch - 从Couchdb迁移到Elasticsearch