Я создал следующие поля Script , в которых я создал новую переменную my_productName
и присвоил значения в соответствии с условием, которое вы упомянули в запросе агрегации Монго.
Обратите внимание, что я предполагаю, что поля имеют тип keyword
, иначе невозможно использовать text datatype.Не стесняйтесь изменить условие в следующем запросе как самоопределяемое.
Также я предполагаю, что все ваши документы будут иметь одно из значений, указанных в том же документе в вашем вопросе.
Запрос запроса:
POST <your_index_name>/_search
{
"query" : {
"match_all": {}
},
"script_fields" : {
"my_productName" : {
"script" : {
"lang": "painless",
"source": """
if(doc['ProductName.CHINA.zh'].value!=null){
return doc['ProductName.CHINA.zh'].value;
}else if(doc['ProductName.CHINA.en'].value!=null){
return doc['ProductName.CHINA.en'].value;
}else if(doc['ProductName.WORLDWIDE.zh'].value!=null){
return doc['ProductName.WORLDWIDE.zh'].value;
}else {
return doc['ProductName.WORLDWIDE.ch'].value;
}
"""
}
}
}
}
Ответ на запрос:
{
"took" : 1,
"timed_out" : false,
"_shards" : {
"total" : 5,
"successful" : 5,
"skipped" : 0,
"failed" : 0
},
"hits" : {
"total" : 1,
"max_score" : 1.0,
"hits" : [
{
"_index" : "<your_index_name>",
"_type" : "<your_type_name>",
"_id" : "1",
"_score" : 1.0,
"fields" : {
"my_productName" : [
"产品 1"
]
}
}
]
}
}
Еще одна вещь: если вы хотите, чтобы появлялись другие поля, вы можете добавить "_source": {"fieldname1", "fieldname2}
поверхthe "query"
.
Надеюсь, что это поможет, и если это произойдет, не стесняйтесь поднять голос и / или принять ответ:)
Дайте мне знать, если у вас есть какие-либо вопросы.