elasticsearch 我正在寻找在elasticsearch中存储特定字段的特定碎片,elasticsearch,elasticsearch" /> elasticsearch 我正在寻找在elasticsearch中存储特定字段的特定碎片,elasticsearch,elasticsearch" />

elasticsearch 我正在寻找在elasticsearch中存储特定字段的特定碎片

elasticsearch 我正在寻找在elasticsearch中存储特定字段的特定碎片,elasticsearch,elasticsearch,通过路由,我们可以在特定的shard中分配特定的文件/doc/json,这使得提取数据变得容易。 但我认为在特定的切分中存储json文件的特定字段也是可能的。 例如: 我有三个字段:用户名、消息和时间。我已经为索引创建了3个碎片。 现在我想要这个 用户名存储在一个分片中,消息存储在另一个分片中,时间存储在另一个分片中 谢谢不,这是不可能的。整个文档(JSON文档)将存储在一个碎片上。如果你想做你描述的事情,那么你应该把数据分割成单独的文档,然后你可以用不同的方式发送它们 至于推理,假设有一个匹配

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


谢谢

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


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

这意味着在elasticsearch中无法实现这一点。我在想,如果这是可能的话,那么如果需要在特定字段上执行搜索,那么搜索性能将得到提高。我不明白您如何认为如果您拆分文档,搜索速度会更快。假设我们正在搜索
username=“john”
。按照你的方式,你只有一个碎片来做所有的计算。使用elasticsearch方式,所有三个碎片共享搜索负载。您的方式如何更快?就检索而言,这将是一个笨拙的过程,但搜索将在一个字段上执行,否则,如果继续查找包含不同字段的所有碎片,我认为您不了解分布式系统的好处。这就是创建elasticsearch的原因,因为它是开箱即用的。其想法是将任务的计算(例如,搜索用户名以“foo”开头)分布到多台计算机上,以加快计算速度。我的错误是,我没有想到分布式搜索以及在搜索数据时,我们可以在特定领域进行搜索