Если поле groups
имеет тип ключевое слово , то упомянутый вами запрос работает должным образом.
Однако оно не будет работать, если поле groups
будет иметь тип text .В этом случае приведенный ниже запрос будет действительно соответствовать тому, что вы ищете.
Запрос для группы - введите текст
POST <your_index_name>/_search
{
"query":{
"bool":{
"must":[
{
"simple_query_string":{
"query":"great guide"
}
}
],
"filter":{
"match":{
"groups":"Local Business"
}
}
}
}
}
Причина, по которой указанный вами запрос не работает дляполе типа text
связано с тем, что это поле проходит этап Analysis , в котором по умолчанию используется Standard Analyzer , в котором он сначала преобразует Local Business
в небольшие случаи, а затем сохраняет local
и business
как два отдельных слова в инвертированном индексе.
Elasticsearch даст вам результаты только в том случае, если слова, которые вы запрашиваете, соответствуют тому, что доступно в индексе.
И то, что делает keyword
, сохраняет Local Business
, как в инвертированном индексе.
Примечание: Вы можете попробовать запрос, заменив groups
на groups.keyword
, если отображение не было определено и создается динамически.
Надеюсь, что этопомогает!