elasticsearch - 是否可以通过查询更新嵌套字段?

标签 elasticsearch

我正在使用按查询更新插件( https://github.com/yakaz/elasticsearch-action-updatebyquery/ )按查询更新文档。
就我而言,文档中有嵌套字段,映射是这样的:

"mappings": {
  "mytype": {
    "properties": {
      "Myfield1": {
        "type": "nested",
        "properties": {
          "field1": {
            "type": "string"
          },
          "field2": {
            "type": "long"
          }
        }
      },
      "Title": {
        "type": "string"
      }
    }
  }
}

然后我想通过以下请求通过查询更新嵌套字段 Myfield1:

但不幸的是,它不起作用。
{
  "query": {
    "match": {
      "Title": "elasticsearch"
    }
  },
  "script": "ctx._source.Myfield1 = [{'nestfield1':'foo blabla...','nestfield2':100},{'nestfield1':'abc...','nestfield2':200}]"
}

按查询更新是否支持嵌套对象?

顺便说一句:还有其他方法可以通过查询更新文档吗?

查询插件更新是唯一的选择吗?

最佳答案

此示例使用 _update_by_query

POST indexname/type/_update_by_query
{
  "query": {
    "match": {
      "Title": "elasticsearch"
    }
  },
  "script": {
    "source": "ctx._source.Myfield1= params.mifieldAsParam",
    "params": {
      "mifieldAsParam": [
        {
          "nestfield1": "foo blabla...",
          "nestfield2": 100
        },
        {
          "nestfield1": "abc...",
          "nestfield2": 200
        }
      ]
    },
    "lang": "painless"
  }
}

关于elasticsearch - 是否可以通过查询更新嵌套字段?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29961075/

相关文章:

elasticsearch - 如何在elasticsearch 2.3.0中删除字段?我用理性来查询

url - 从 elasticsearch 查询创建一个 Kibana URL

elasticsearch - ElasticSearch 可以处理复杂的 Bool 查询吗?前 : (A and B) or (C and D)

elasticsearch - 多个非嵌套聚合

elasticsearch - 使用正则表达式的 Kibana 无法按预期工作

python - 使用Python UTF-8问题进行Elasticsearch索引编制

amazon-web-services - 如何更改现有的AWS Kinesis Firehose交付流的目的地

elasticsearch - 以文本格式获取一周中的某一天,例如星期一、星期二等

python - Elasticsearch 如何查询高于 x 的 ID 字段

elasticsearch - Elasticsearch 多个发布主机