【问题标题】:Update by query in elasticsearch在 elasticsearch 中通过查询更新
【发布时间】:2016-10-26 19:04:03
【问题描述】:

我正在尝试使用this 答案中提供的方法在我的弹性搜索索引上运行update by query。这是我一直在尝试运行的查询:

curl -XPOST 'localhost:9200/my_index/_update_by_query' -d '
{
  "query":{
    "match":{
      "latest_uuid":"d56ffe2095f511e6bcdd0acbdf0298e3"
    }
  },
  "script" : "ctx._source.is_in_stock = \"false\";"
}'

但我不断收到以下错误:

{
    "error": {
        "root_cause": [
            {
                "type": "class_cast_exception",
                "reason": "java.lang.String cannot be cast to java.util.Map"
            }
        ],
        "type": "class_cast_exception",
        "reason": "java.lang.String cannot be cast to java.util.Map"
    },
    "status": 500
}

我在这里做错了什么?

【问题讨论】:

  • 尝试“_update_by_query?is_in_stock=false”并删除脚本行以查看问题是否是脚本

标签: elasticsearch


【解决方案1】:

找到了解决办法。

原来我必须使用以下脚本:

"script":{"inline":"ctx._source.is_in_stock = false"}

【讨论】:

    【解决方案2】:

    我认为问题可能是不想被强制转换的“假”(字符串值)。

    curl -XPOST 'localhost:9200/my_index/_update_by_query' -d '
    {
      "query":{
        "match":{
          "latest_uuid":"d56ffe2095f511e6bcdd0acbdf0298e3"
        }
      },
      "script" : "ctx._source.is_in_stock = false;"
    }'
    

    你可以先试试。等待您的反馈! :)

    【讨论】:

    • 嗨,我发现了问题并添加了对应的答案。谢谢您的帮助! :)
    • 是的,我明白了,我们同时发帖,GGWP!
    猜你喜欢
    • 2017-07-18
    • 2017-01-02
    • 1970-01-01
    • 2017-09-06
    • 1970-01-01
    • 1970-01-01
    • 2019-06-08
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多