Вы почти там, просто добавьте оператор OR
в свой запрос, который решит ваш второй вариант использования list words in which at least one of them occurs in one of the fields,
Позвольте мне показать, если вы на примере:
Индекс def
{
"mappings" :{
"properties" :{
"title" :{
"type" : "text"
},
"description":{
"type" : "text"
}
}
}
}
Пример индекса do c
{
"title" : "foo",
"description": "opster"
}
{
"title" : "bar",
"description": "stackoverflow"
}
{
"title" : "baz",
"description": "nodesc"
}
Поисковый запрос, уведомление, которое я ищу foo amit
, список слов, по крайней мере, одно из них должно совпадать в любом из 2 полей
{
"query": {
"bool": {
"should": {
"multi_match": {
"query": "foo amit",
"fields": [
"title",
"description"
],
"operator": "or" --> notice operator OR
}
}
}
}
}
Результат поиска
"hits": [
{
"_index": "white",
"_type": "_doc",
"_id": "1",
"_score": 0.9808291,
"_source": {
"title": "foo", --> notice this match as `foo` is present and we used opertor OR in query.
"description": "opster"
}
}
]