{
"script_fields": {
"pressure": {
"script": {
"source": "for(item in params._source.datas){ if(item.name=='pressure')return item.value;} return '';"
}
}
}
}
Поля скрипта рассчитываются на лету. Поэтому лучшим вариантом было бы извлечь поле из inner_hits
Запрос:
{
"query": {
"nested": {
"path": "datas",
"query": {
"term": {
"datas.name.keyword": {
"value": "pressure"
}
}
},
"inner_hits": {}
}
}
}
Результат:
"hits" : [
{
"_index" : "index5",
"_type" : "_doc",
"_id" : "kf6xw3EB8jeMa7x6RMwZ",
"_score" : 0.9808291,
"_source" : {
"eid" : "",
"line" : "Line 1",
"equipment" : "Equipment 1",
"ladderver" : "",
"registrydate" : "2020-02-18T19:47:33",
"registryutcdate" : "2020-02-18T10:47:33",
"setupid" : "",
"workid" : "2345743",
"datas" : [
{
"datas_id" : "001",
"name" : "cycletime",
"value" : "13.9"
},
{
"datas_id" : "002",
"name" : "machinetime",
"value" : "10.7"
},
{
"datas_id" : "003",
"name" : "pressure",
"value" : "12.56"
}
]
},
"inner_hits" : {
"datas" : {
"hits" : {
"total" : {
"value" : 1,
"relation" : "eq"
},
"max_score" : 0.9808291,
"hits" : [
{
"_index" : "index5",
"_type" : "_doc",
"_id" : "kf6xw3EB8jeMa7x6RMwZ",
"_nested" : {
"field" : "datas",
"offset" : 2
},
"_score" : 0.9808291,
"_source" : {
"datas_id" : "003",
"name" : "pressure",
"value" : "12.56"
}
}
]
}
}
}
}
]
}
РЕДАКТИРОВАТЬ 1: Мой ответ был на запрос в инструментах разработки. Для поля сценария шаблона индекса необходимо добавить ниже
for(item in params._source.datas)
{
if(item.name=='pressure'){
return item.value;
}
}
return 0;