嵌套数据在脚本字段中的性能

时间:2017-11-07 13:54:30

标签: elasticsearch

我想知道是否有更高效的方法来对脚本字段中的嵌套数据执行计算或组织数据。在下面的代码中,数据将包含50个州和/或其他区域的值。每个用户都绑定到一个区域,因此上面的脚本将搜索其区域中的averageValue是否高于某个阈值,并为每个匹配的文档返回true / false值。

映射

{
  "mydata" : {
    "properties" : {
      ...some fields,
      "related" : {
        "type" : "nested",
        "properties" : {
          "average_value" : {
            "type" : "integer"
          },
          "state" : {
            "type" : "string"
          }
        }
      }
    }
  }
} 

脚本

"script_fields" : {
  "inBudget" : {
    "script" : {
      "inline" : "_source.related.find { it.state == default_area && it.average_value >= min_amount } != null",
      "params" : {
        "min_amount" : 100,
        "default_area" : "CA"
      }
    }
  }
}

我有一个使用上述方法的工作解决方案,但它减慢了我的查询速度,我很好奇是否有更好的解决方案。我一直在想要使用带有键的内部对象,例如:related_CA并将每个状态数据放在一个单独的对象中,但为了灵活性,我宁愿不必在映射中预先定义每个区域(因为我可能没有提前完成所有这些)。我觉得我可能会错过一个更简单/更好的方法,我愿意重新组织数据/映射和/或更改脚本。

0 个答案:

没有答案