Обновить поле в документе на основе условия в Kibana / Elasticsearch - PullRequest
0 голосов
/ 04 июня 2019

Я пытаюсь обновить определенное поле в документе на основании какого-либо условия. В общем случае, я хочу сделать следующее.

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 Ответ

1 голос
/ 04 июня 2019

Вы можете использовать приведенный ниже запрос к тому, что вы ищете.Я предполагаю name и source ваши поля в вашем индексе.

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"
            }
          }
        }
      ]
    }
  }
}

Вы, вероятно, можете использовать любой из Полнотекстовые запросы или ТерминЗапросы внутри Bool Query для поиска / обновления / удаления.

Потратьте некоторое время на их прохождение.

Примечание: Используйте Term Queries, только если тип данных вашего поля keyword

Надеюсь, это поможет!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...