При обновлении документа (с использованием API обновления) мне нужно извлечь поле последнего введенного элемента массива, а затем использовать его при добавлении нового элемента в тот же массив.
Например:
{
"_id": "guid",
"timestamp": "time",
"conversation": [
{
"previousTopic": "A",
"currentTopic": "B",
"score": 80
},
{
"previousTopic": "B",
"currentTopic": "C",
"score": 85
}
]
}
Теперь, вставляя новый элемент в этот массив с помощью API обновления, сначала извлеките поле «currentTopic» последнего элемента (в данном случае это C), а затем вставьте его как «previousTopic» следующего элемента.
Я знаю, как использовать API базового обновления, который бы вставлял новый элемент в массив документа:
POST test/_doc/{doc_id}/_update
{
"script" : {
"source": "ctx._source.communication.add(params.newcom)",
"lang": "painless",
"params" : {
"newcomm" : {
"previousTopic": {extracted value will go here}
"currentTopic" : "D"
"score" : 89 }
}
}
}