Elasticsearch - 通过批量计算获取新属性



我试图了解 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": {
    }
  }
}

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

最新更新