Вы можете просто использовать запрос bool must с множественным соответствием для ex:
{
"query": {
"bool": {
"must": [
{
"match": {
"name": "green"
}
},
{
"match": {
"name": "apple"
}
}
]
}
}
}
Теперь, когда вы не указали, давайте рассмотрим два варианта использования
Примеры документов индекса
{
"name" : "green apple"
}
{
"name" : "green"
}
{
"name" : "apple"
}
случай 1: вы хотите, чтобы и зелень, и яблоко присутствовали в name
поле
{"запрос": {"bool": {"match": [-> обратите внимание на это {"match": {"name": "green"}}, {"match": {"name": "apple"}}]}} }
Результат поиска содержит только 1 do c
"hits": [
{
"_index": "boolmatch",
"_type": "_doc",
"_id": "1",
"_score": 0.78038335,
"_source": {
"name": "green apple"
}
}
]
случай 2: зеленый или яблочный цвет должны присутствовать в поле имени
{
"query": {
"bool": {
"should": [
{
"match": {
"name": "green"
}
},
{
"match": {
"name": "apple"
}
}
]
}
}
}
Результат поиска содержит все 3 образца
"hits": [
{
"_index": "boolmatch",
"_type": "_doc",
"_id": "1",
"_score": 0.78038335,
"_source": {
"name": "green apple"
}
},
{
"_index": "boolmatch",
"_type": "_doc",
"_id": "2",
"_score": 0.52354836,
"_source": {
"name": "green"
}
},
{
"_index": "boolmatch",
"_type": "_doc",
"_id": "3",
"_score": 0.52354836,
"_source": {
"name": "apple"
}
}
]
}