Я очень новичок в мире Elastic, и у меня много проблем с пониманием логики некоторых операций.В настоящее время изучаю и пробую много вещей, поэтому я сейчас немного растерялся и мне нужны некоторые подсказки.
Сценарий.У меня есть следующие (client
тип) документы в индексе clients
(не волнуйтесь: имена футболистов, а номера телефонов не настоящие):
{
"firstName" : "Alessandro",
"lastName" : "Nesta",
"phoneNumber" : "+3949304903",
"merchantId" : "90339203812831293"
},
{
"firstName" : "Alessandro",
"lastName" : "Del Piero",
"phoneNumber" : "+39129302902",
"merchantId" : "90339203812831293"
},
{
"firstName" : "Alessandro",
"lastName" : "Costacurta",
"phoneNumber" : "+39098921321",
"merchantId" : "1239021392839238"
}
Теперь поискзапрос, который я ищу, в основном делает это: учитывая merchantId
и строку запроса, попробуйте найти строку запроса внутри firstName или внутри lastName, но убедитесь, что merchantId точно такой же, как тот, который был передан в запросе.
Допустим, у меня есть строка запроса "Aless" и merchantId "90339203812831293", в мире SQL, который я собирался сделать:
SELECT
*
FROM
`clients`
WHERE
`merchantId` = "90339203812831293"
AND
(
`firstName` LIKE "Aless%" OR `lastName` LIKE "Aless%"
);
И результаты должны быть:
{
"firstName" : "Alessandro",
"lastName" : "Nesta",
"phoneNumber" : "+3949304903",
"merchantId" : "90339203812831293"
},
{
"firstName" : "Alessandro",
"lastName" : "Del Piero",
"phoneNumber" : "+39129302902",
"merchantId" : "90339203812831293"
}
Что я пробовал?В основном отличается от комбинаций, от размещения merchantId в разделе фильтра, до multi_match.
{
"query": {
"bool": {
"should": [
{
"wildcard": {
"firstName": "aless*"
}
},
{
"wildcard": {
"lastName": "aless*"
}
}
],
"must": {
"match": {
"merchantId": "90339203812831293"
}
}
}
}
0 результатов (если я удаляю часть merchantId, то работает нормально).
Я пробовал с запросомСтроки тоже:
{
"query": {
"bool": {
"must": {
"query_string": {
"query": "Del*",
"fields": [
"firstName",
"lastName"
]
}
},
"filter": {
"term": {
"merchantId": "90339203812831293"
}
}
}
}
}
Та же проблема.Не могли бы вы мне указать, что я делаю неправильно?Заранее спасибо!