之前的设置是一种类型的所有文档都在同一索引中。但由于类型的不同形式(概念上)以及备份目的,我需要单个类型的多个索引。
它们都将采用 _feed 的形式。虽然这种设置在某些情况下很好,但
client.prepareGet(index, typename, ids).execute().actionGet(); // works great if you know in which index to search
它没用,因为不能使用通配符。我能做的是使用多个多项并交错结果。这导致了我想要的,但显着增加了查询量 假设我确实知道,只有一个文档存在给定索引,有没有更好的方法来查询,而不是为所有_uids调用每个可能索引的多重数据?
答案 0 :(得分:2)
最好的方法是在应用程序中开发一种机制,允许您从id中推导出索引名称。但假设这不可能或不实用,你几乎只有两种选择。如果你需要实时获取,那么你的方法是唯一的方法。如果不要求实时获取,则可以使用ids filter跨所有索引执行搜索。如果ID列表很小,您可以在搜索查询中使用routing。这样,搜索请求将仅分派给可能包含查询中列出的任何ID的分片。但是,如果id列表足够大,可以跨越大多数分片,则不会带来任何好处。