Создать поле ключевого слова, объединенное с другими полями - PullRequest
0 голосов
/ 25 февраля 2019

У меня есть индекс с отображением 3 полей.Допустим, f1, f2 и f3.
Я хочу новое поле ключевого слова с конкатенацией значений f1, f2 и f3, чтобы иметь возможностьагрегировать его, чтобы избежать большого количества вложенных циклов при проверке результатов поиска.

Я видел, что этого можно добиться с помощью преобразования источника , но начиная с эластичного v5, эта функция былаудалено.

Используемая версия ElasticSearch: 6,5

В: Как архивировать объединение в ElasticSearch v 6.5?

1 Ответ

0 голосов
/ 25 февраля 2019

Перед ES 5 действительно было преобразование исходного кода, но с ES 5 теперь появилась более мощная функция, называемая узлами приема , которая позволит вам легко достичь того, что вам нужно:

Сначала определите конвейер загрузки, используя set процессор , который поможет вам объединить три поля в одно:

PUT _ingest/pipeline/concat
{
  "processors": [
    {
      "set": {
        "field": "field4",
        "value": "{{field1}} {{field2}} {{field3}}"
      }
    }
  ]
}

Затем вы можете индексировать документ, используя этот конвейер:

PUT index/doc/1?pipeline=concat
{
  "field1": "1",
  "field2": "2",
  "field3": "3"
}

И индексированный документ будет выглядеть следующим образом:

{
  "field1": "1",
  "field2": "2",
  "field3": "3",
  "field4": "1 2 3"
}

Просто создайте индекс с соответствующим отображением для field4 до индексации первого документа.

...