代码之家  ›  专栏  ›  技术社区  ›  Helping hand

更新所有文档中特定字段的弹性搜索文档字段值

  •  1
  • Helping hand  · 技术社区  · 6 年前

    我有这样的文件。

    {
    "a":"test",
    "b":"harry"
    },
    {
    "a":""
    "b":"jack"
    }
    

    a=="" (空字符串)设置为默认值 null 在给定索引的所有文档中。

    2 回复  |  直到 6 年前
        1
  •  1
  •   Ijaz Ahmad    6 年前

    使用 Update by query with ingest

    _update\ by\查询还可以通过如下方式指定管道来使用摄取节点功能:

    定义管道

    PUT _ingest/pipeline/set-foo
    {
      "description" : "sets foo",
      "processors" : [ {
          "set" : {
            "field": "a",
            "value": null
          }
      } ]
    }
    

     POST myindex/_update_by_query?pipeline=set-foo
    {
     "query": {
       "filtered": {
         "filter": {
           "script": {
             "script": "_source._content.length() == 0"
           }
         }
       }
     }
    }'
    

    或者

        POST myindex/_update_by_query?pipeline=set-foo
        {
            "query": {
                "bool" : {
                    "must" : {
                        "script" : {
                            "script" : {
                                "inline": "doc['a'].empty",
                                "lang": "painless"
                             }
                        }
                    }
                }
            }
        }
    
        2
  •  0
  •   Helping hand    6 年前

    ''
    是的,

    "query": {
      "bool": {
        "must": [
          {
            "exists": {
              "field": "a"
            }
          }
        ],
        "must_not": [
          {
            "wildcard": {
              "a": "*"
            }
          }
          ]
        }
      }
    

    所以整体查询更新所有带字段的单据 a==""

    POST test11/_update_by_query
    {
      "script": {
        "inline": "ctx._source.a=null",
        "lang": "painless"
      },
      "query": {
        "bool": {
          "must": [
            {
              "exists": {
                "field": "a"
              }
            }
          ],
          "must_not": [
            {
              "wildcard": {
                "a": "*"
              }
            }
          ]
        }
      }
    }