【问题标题】:Elastic Search Adding a Script Field vs Adding a new Index field弹性搜索添加脚本字段与添加新索引字段
【发布时间】:2015-08-25 14:28:47
【问题描述】:

我是弹性搜索的新手。 我有一个名为“实际”的索引字段,它是浮点类型。 我需要一个新字段“派生”,它是经过一些计算后从“实际”字段派生的。 例如,derived.value = ((actual.value/120) - 30) x 2 我需要弹性搜索中的所需字段,因为, - 我想根据 derived.value 对 Elastic Search 结果进行排序 - 我想根据派生值检索结果。如果 derived.value > 20,则仅检索文档

我知道我们也可以在弹性搜索中使用脚本字段来做到这一点。 我的问题是,根据获取时间,哪个更有效? 向弹性搜索存储添加新的索引字段还是使用脚本字段?

更新: 公式变得非常复杂, 派生值 = ((actual.value/a) - b) x (c - d/2)

这里,“a”可以取 6 个不同的值,“b”可以取 8 个不同的值,“c”可以取 12 个不同的值,“d”可以取 3 个不同的值。 如果我要预先计算值,那么我需要在一个文档中添加额外的 (6 x 8 x 12 x 3) 字段来检索值而无需任何计算。

但如果我使用的是脚本字段,那么我可以在搜索时将 a、b、c、d 的当前值作为参数传递并即时计算它们。

我目前有一万个文档,它的大小可以增长更多。 除了拥有脚本字段之外,还有其他乐观的方法吗?

【问题讨论】:

    标签: elasticsearch


    【解决方案1】:

    肯定应该是添加的字段。每次搜索执行时,每个文档都需要执行脚本,这是 CPU 密集型的。在前者中,我们只需要检索它应该会快得多。

    【讨论】:

    • 感谢 Vineeth 的回答。但是从问题的更新中可以看出,要求要复杂得多。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-04-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多