Перед 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
до индексации первого документа.