Elasticsearch с сгруппированной строкой query_string
{
"query":
{
"query_string" :
{
"query" : "((name:the_search_phrase) OR (keywords:the_search_phrase)) AND (city:Sydney, Australia)"
}
}
}
Новое в elasticsearch. Создание JSON в соответствии с документацией здесь: https://www.elastic.co/guide/en/elasticsearch/reference/current/query-dsl-query-string-query.html
Однако запрос выполняется с другим городом Sydney, Australia
тоже возвращаются. Почему часть И не работает?
Я хочу, чтобы поисковая фраза соответствовала одному или обоим ключевым словам, но город должен быть строго Сидней.
1 ответ
Вы делаете полнотекстовый запрос. city:Sydney, Australia
похоже, это фильтр-запрос. Как предложение WHERE в SQL. Для этого лучше использовать фильтр-запрос.
Посмотрите на логический запрос для примеров,
Что-то вроде этого возможно,
{
"query": {
"bool": {
"must": [
{
"query_string": {
"query": "the_search_term",
"fields": [
"name",
"keywords"
]
}
}
],
"filter": [
{
"match": {
"city": "Sydney, Australia"
}
}
]
}
}
}