elasticsearch,Lucene,elasticsearch" /> elasticsearch,Lucene,elasticsearch" />

Lucene Elasticsearch中更新文档的增强功能

Lucene Elasticsearch中更新文档的增强功能,lucene,elasticsearch,Lucene,elasticsearch,我有一个场景,我将URL存储在Elasticsearch中特定索引中的文档中。有时我会多次得到一个现有的URL。我想使用Elasticsearch增加遇到特定URL的次数。这可以通过使用带有脚本的更新API来实现。然而,这有时似乎是缓慢而复杂的 Elasticsearch中是否有方法在更新现有文档时增强文档?如果是的话,我想我可以用它来衡量点击率,因为每次我遇到一个现有的URL,我都可以提高点击率,这将解决我的所有问题。如果你在更新时更新文档的提升,你无论如何都必须删除并重新索引该文档。它不会为

我有一个场景,我将URL存储在Elasticsearch中特定索引中的文档中。有时我会多次得到一个现有的URL。我想使用Elasticsearch增加遇到特定URL的次数。这可以通过使用带有脚本的更新API来实现。然而,这有时似乎是缓慢而复杂的


Elasticsearch中是否有方法在更新现有文档时增强文档?如果是的话,我想我可以用它来衡量点击率,因为每次我遇到一个现有的URL,我都可以提高点击率,这将解决我的所有问题。

如果你在更新时更新文档的提升,你无论如何都必须删除并重新索引该文档。它不会为您节省任何性能,但由于索引时间的增加和精度的降低,您将失去灵活性


简单地增加一个字段,然后将该字段用作以后的自定义提升值(使用函数\ u分数、自定义\ u分数等)会更简洁。性能开销相同,但灵活性更大。如果您发现更新整个文档太慢,可以将计数器拆分为其自己的文档类型,该文档类型专用于计数器。因为文档只包含一个字段,所以它们会很快更新。

所以这可能有效,但我不确定。我需要试试。但当我在与URL相同的文档中使用计数器时,我注意到很多版本冲突。我的设置是,我有3个节点,其中有两个数据节点和一个非数据节点,我向非数据节点(也是主节点)写入数据。版本冲突背后的原因可能是非数据节点充当集群中的LB,当遇到两个URL时,我们尝试增加计数器,但这可能同时发生在两个不同的节点上,导致版本冲突。我们的索引/更新负载大约为8K/秒。对文档的更新只发生在主碎片上,因此实际上与集群中有多少节点或发送请求的位置无关。更新请求将始终重定向到保存文档的单个主碎片。版本冲突是因为ES使用乐观并发控制,两个更新在同一个碎片上相互竞争。增加
retry\u on\u conflict
,更新最终会“粘住”。