根据Kibana / Elasticsearch中的条件更新文档中的字段

时间:2019-06-04 15:25:51

标签: elasticsearch kibana

我正在尝试根据某些条件更新文档中的特定字段。在一般的sql方式中,我想执行以下操作。

Update index indexname
set name =  "XXXXXX"
where source: file and name :  "YYYYYY"

我正在使用下面的内容更新所有文档,但是我无法添加任何条件。

POST indexname/_update_by_query
{
  "query": { 
    "term": {
      "name": "XXXXX"
    }
  }
}

这是模板,我正在使用:

{
  "indexname": {
    "mappings": {
      "idxname123": {
        "_all": {
          "enabled": false
        },
        "properties": {
          "name": {
            "type": "text",
            "fields": {
              "keyword": {
                "type": "keyword",
                "ignore_above": 256
              }
            }
          },
          "date1": {
            "type": "date",
            "fields": {
              "keyword": {
                "type": "keyword",
                "ignore_above": 256
              }
            }
          },
          "source": {
            "type": "text",
            "fields": {
              "keyword": {
                "type": "keyword",
                "ignore_above": 256
              }
            }
          }
        }
      }
    }
  }
}

有人可以指导我如何如上所述为源和名称添加条件。

谢谢, 巴布

1 个答案:

答案 0 :(得分:1)

您可以根据需要使用以下查询。我假设(async() => { const browser = await puppeteer.launch({}); const page = await browser.newPage(); await page.goto('https://stackoverflow.com', {waitUntil : 'networkidle2' }); // Here we can get all of the cookies console.log(await page._client.send('Network.getAllCookies')); })(); name是您索引中的字段。

source

您可能可以使用Full Text Queries内的Term QueriesBool Query中的任何一个来进行搜索/更新/删除。

花一些时间来经历它们。

注意:仅当您字段的数据类型为POST <your_index_name>/_update_by_query { "script": { "inline": "ctx._source.name = 'XXXXX'", "lang": "painless" }, "query": { "bool": { "must": [ { "term": { "name": { "value": "YYYYY" } } }, { "term": { "source": { "value": "file" } } } ] } } } 时才使用Term Queries

希望这会有所帮助!