Запрос для всех свойств в поле объекта

115
17

это мой сценарий: я работаю над приложением Laravel, используя Scout Elastic Driver и ElasticSearch. У меня есть индекс, который содержит документы, отображаемые следующим образом:

{
"acronym":{
"type":"text"
},
"id":{
"type":"long"
},
"product_id":{
"type":"integer"
},
"trans":{
"properties":{
"en":{
"type":"text",
"fields":{
"keyword":{
"type":"keyword",
"ignore_above":256
}
}
},
"it":{
"type":"text",
"fields":{
"keyword":{
"type":"keyword",
"ignore_above":256
}
}
}
}
},
"value":{
"type":"text"
}
}

И это мое текущее правило поиска:

'should' =>
[
[
'match' => [
'value' => $this->builder->query,
],
],
[
'match' => [
'trans.it' => $this->builder->query,
]
],
[
'match' => [
'trans.en' => $this->builder->query,
]
],
],

Он отлично работает, он возвращает мне данные, которые имеют значение в одном или нескольких из этих полей правильно. Но, как вы можете видеть, поле trans содержит переведенные данные, и в моем приложении мы можем иметь несколько переводов и добавлять каждый раз, когда новый запрос поиска в запросе не подходит для меня.

Итак, есть ли способ запросить все свойства в поле объекта? Что-то вроде этого:

[
'match' => [
trans.*' => $this->builder->query,
]
],

спросил(а) 2021-01-19T12:34:01+03:00 2 месяца, 3 недели назад
1
Решение
75

Это работает для меня

get your-index/your-type/_search
{
"query":{
"multi_match": {
"query": "STRING-TO-SEARCH",
"fields": ["trans.*"]
}
}
}

ответил(а) 2021-01-19T12:34:01+03:00 2 месяца, 3 недели назад
Ваш ответ
Введите минимум 50 символов
Чтобы , пожалуйста,
Выберите тему жалобы:

Другая проблема