我正在寻找在弹性搜索中存储特定字段的特定碎片



通过路由,我们可以在特定的shard中分配特定的文件/doc/json,这使得提取数据变得容易。但我在想,将json文件的特定字段存储在特定的shard中是可能的。例如:我有三个字段:用户名、消息和时间。我创建了3个用于索引的碎片。现在我想要username存储在一个碎片中,message存储在另一个碎片,time存储在另个碎片中。

感谢

不,这是不可能的。整个文档(JSON文档)将存储在一个碎片上。如果你想做你描述的事情,那么你应该把数据拆分成单独的文档,然后你可以用不同的方式发送它们。

至于推理,假设有一个与document5匹配的用户名查询。如果document5分布在许多碎片上,则必须查询所有这些碎片,才能将document5的其他部分返回以编译结果。想象一下,如果在不同的字段之间进行复杂的AND查询,那么将有大量的流量(并等待)来确定这两个字段是否匹配,以计算文档是否命中。

最新更新