Elasticsearch 5.2.2 ::删除地图字段中的条目无效

时间:2017-03-14 22:04:17

标签: elasticsearch

我有一个地图字段,我正在尝试使用脚本(无痛)更新它。当我使用rest客户端执行脚本时,它可以工作,但不能使用java API(没有更改,但UpdateResponse中的结果是“UPDATED”)。任何人都可以帮我解决这个问题: Elasticsearch 5.2.2(也在5.1.1上尝试)

--------- Rest Client(Chrome):

POST localhost:9200/context/profile/720c7bc5-9c52-48bd-b281-760f595c6418/_update
BODY :{
    "scriptedUpsert": true,
    "script": {
      "lang": "painless",
      "inline": "ctx._source.put(\"scores\", params.scoringValue)",
      "params": {
      "scoringValue": {
        "_i833rilwd": 333
      }
    }
}
}

--------- Java客户端:

String script = "ctx._source.put(\"scores\", params.scoringValue)";

//Map where I remove and put to update
Map scores = toRemove.getScores();

HashMap scriptParams = new HashMap<>();
scriptParams.put("scoringValue", scores);

Script actualScript = new Script(ScriptType.INLINE, "painless", script, scriptParams);

UpdateResponse resp = client.prepareUpdate(index, itemType, itemId).setScript(actualScript)
.execute()
.get();

请事先提供帮助

2 个答案:

答案 0 :(得分:0)

我不确定JAVA,但我认为问题在于

  

\&#34;

试试这个

String script = "ctx._source.put(\\"scores\\", params.scoringValue)";

答案 1 :(得分:0)

通过在删除之前执行刷新索引解决,如果没有文档版本冲突。希望这会有所帮助。