ElasticSearch:更新Script Java Plugin中的多个字段

时间:2017-01-20 08:14:12

标签: java elasticsearch

我看到 update_by_query 可以直接更新来源的代码段

POST twitter/_update_by_query
{
  "script": {
    "inline": "ctx._source.likes++",
    "lang": "painless"
  },
  "query": {
    "term": {
      "user": "kimchy"
    }
  }
}
由于我复杂的业务逻辑,我在Java中编写了一个本机脚本插件,而不是使用无痛。

{
  "subtotal": 1000,
  "markup": 2,  
  "total": 2000,
  "items": [
      {
         "subtotal": 100,
         "markup": 2,
         "total": 200
      },
      {
         "subtotal": 500,
         "markup": 2,
         "total": 1000
      }
   ]
}

用户可以在应用程序中设置标记值。如果用户将标记更改为3,我想更新标记和总字段,包括嵌套对象中的字段。(注意:我无法使用无痛,因为在我的情况下,逻辑更复杂而不仅仅是将这些字段相乘。这就是我使用Java的原因

// my plugin code
public Object run() {
     // change field value of "markup"
     // change field value of "total"   

   return true;
}

我的代码与https://github.com/imotov/elasticsearch-native-script-example/blob/master/src/main/java/org/elasticsearch/examples/nativescript/script/TFIDFScoreScript.java

几乎相似

我在尝试使用source().put("markup", 3),但我一直在NullPointerException

ElasticSearch版本:5.0.0

谢谢

0 个答案:

没有答案