如何使用ElasticSearch中的脚本向数组添加对象?

时间:2017-04-05 14:06:33

标签: elasticsearch elasticsearch-5 elasticsearch-painless

我正在尝试将一个项目添加到我的一个弹性搜索文档中的数组中。我可以为简单的项目(如字符串)执行此操作,但现在无法解决添加对象的问题。这是我目前的代码:

POST /user_profiles/user_profile/12345/_update
{
    "script" : {
        "inline": "ctx._source.searches.add(params.search)",
        "lang": "painless",
        "params" : {
            "search" : {
                "test": "test2"
            }
        }
    }
}

我收到以下错误:

{
   "error": {
      "root_cause": [
         {
            "type": "mapper_parsing_exception",
            "reason": "failed to parse [searches]"
         }
      ],
      "type": "mapper_parsing_exception",
      "reason": "failed to parse [searches]",
      "caused_by": {
         "type": "illegal_state_exception",
         "reason": "Can't get text on a START_OBJECT at 1:29"
      }
   },
   "status": 400
}

1 个答案:

答案 0 :(得分:0)

我发现了这个问题。它与查询本身无关。问题是索引的映射不包含其他字段。