【问题标题】:Default value for missing field in document for elasticsearch statistical facet弹性搜索统计方面文档中缺失字段的默认值
【发布时间】:2013-10-23 07:00:06
【问题描述】:

我正在使用统计方面 (@see http://www.elasticsearch.org/guide/en/elasticsearch/reference/current/search-facets-statistical-facet.html) 对我的 Elastic Search 索引中文档的几个字段执行聚合。

我想知道是否有人知道 API 是否提供了一种在特定字段不存在时提供默认值的方法。例如,如果字段不存在,则使用 0(零)作为该字段的值。默认情况下,当聚合发生时,它似乎会给出一个空指针异常。

我最初的想法是利用脚本字段来测试聚合字段是否为空,并在那里执行默认的 0 逻辑。

【问题讨论】:

  • 或者您可以重新索引并在映射中预先提供默认值。

标签: lucene elasticsearch


【解决方案1】:

正如您在问题中所述,您可以尝试此处定义的脚本字段:http://www.elasticsearch.org/guide/en/elasticsearch/reference/current/search-facets-statistical-facet.html#_script_field_2

例如:"script" : "_source.place == null ? null : 0"

我承认我没有在统计方面尝试过这个,但我在术语统计方面使用了类似的脚本并且效果很好。

【讨论】:

  • 我能够以类似方式执行此操作,但我必须使用“doc.containsKey”来测试该字段是否存在。我不存储源,但我会接受你的回答,因为这几乎是我所走的路。
  • 这是一个不错的解决方案。谢谢!
  • 我想你想把它转成"script" : "_source.place == null ? 0 : _source.place"
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-08-19
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-01-12
  • 2017-09-01
相关资源
最近更新 更多