繁体   English   中英

Elasticsearch-批量计算新属性

[英]Elasticsearch - Pick up a new property with calculation in bulk

我试图围绕ES的工作原理,但似乎没有成功。 我希望它读取JSON文件,并通过从现有文件中计算一个值,将新属性附加到每个条目。 语法是什么? 我似乎无法将文档中的信息汇总起来以使其正常工作。 谢谢!

我正在尝试做类似的事情

POST /mystuff/1/_update
{
"doc": {
     "recency": (DateTime.now().getMillis() - doc['maxdate'].value)/(24*60*60*1000)
     }
}

/mystuff下的所有文档。 (这显然是行不通的。)

[编辑]样本输入:

PUT /mystuff/1
{
...
  "maxdate": "2016-06-14",
...
}

ES版本:2.3.4

您必须使用Elasticsearch的_update_by_query API来更新多个文档。 您可以在此处阅读更多有关此内容的信息

您的代码将以以下方式更改

POST mystuff/_update_by_query
{
  "script": {
    "inline": "ctx._source.recency = (DateTime.now().getMillis() - DateTime.parse(ctx._source.maxdate).getMillis())/(24*60*60*1000)"
  },
  "query": {
    "match_all": {
    }
  }
}

您应该启用脚本内联和脚本更新才能使其正常工作。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM