Что ж, в этом случае вы используете оператор "must", который можно объяснить как
firstname:john OR lastname:smith
, вместо этого это можно легко исправить с помощью слова "must", которое можно объяснить как
firstname:john AND lastname:smith
Также, как упоминает Роб в своем ответе, вложенный vs объект действительно является дилеммой.
, но эта дилемма может возникнуть, когда вы обрабатываете массивы информации.
, например, вывведите следующую запись
запись # 1
{
"serviceType": "mysql",
"allowedUsers": [
{
"firstName": "Daniel",
"lastName": "Acevedo"
},
{
"firstName": "John",
"lastName": "Smith"
},
{
"firstName": "Mike",
"lastName": "K"
}
]
}
, и вы выполните следующий поиск
{
"size": 10,
"query": {
"query_string": {
"query": "firstName:john AND lastName:acevedo"
}
}
}
, и вы получите совпадение в документе, потому что, как firstName, так иlastName соответствует вашему документу, даже если они совпадают в разных пользовательских объектах. это пример сопоставления OBJECT.
в этом случае обходного пути нет, и вы должны использовать отображение NESTED для достижения естественного совпадения.
в вашем конкретном случае, я не думаю, чтоВы сталкиваетесь с этим, поэтому, выполняя запрос OBJECT и MUST (И вместо того, чтобы (ИЛИ)), вы должны справиться.
, если вам нужны дополнительные объяснения, дайте мне знать, что я внесу изменения с более подробной информацией.
ура.