Проверка по списку в упругом поиске
У меня есть поле со значением в качестве списка. Например
_id = 1
tags = ["IT", "mobile", "OS"]
_id = 2
tags = ["Mac", "fast", "laptop"]
_id = 3
tags = ["IT", "android", "OS"]
У меня есть список, чтобы проверить по полю тега.
sample = ["OS", "opera", "mobile"]
Так что документы с id 1
а также id 3
должно совпадать, когда я запрашиваю теги, используя набор образцов.(Причина id 1
содержит "OS"
а также "mobile"
а также id 3
conatins "OS"
.)
Как я могу сделать это при упругом поиске?
2 ответа
Решение
Попробуйте приведенный ниже логический запрос с ключевым словом should.
GET /_search
{
"query": {
"bool": {
"should": [
{ "match": { "tags": "OS" }},
{ "match": { "tags": "opera" }},
{ "match": { "tags": "mobile" }}
]
}
}
}
Возможно, важное примечание для дальнейших запросов: если вы планируете выполнять поиск и объект, содержащий ВСЕ 3 значения (но не 2 или только 1 тег), вам обязательно следует сначала прочитать о вложенных объектах в Elasticsearch.
Попробуй это
GET /_search
{
"query": {
"bool": {
"should": [
{
"terms":
{
"tags": ["OS", "opera","mobile"]
}
}
]
}
}
}