#elasticsearch #search #elasticsearch-dsl
#эластичный поиск #Поиск #elasticsearch-dsl
Вопрос:
Как мне определить query_string
, какой анализатор использовать при поиске?
Я создал свой индекс с помощью анализатора следующим образом:
"analysis": {
"analyzer": {
"std_analyzer": {
"tokenizer": "whitespace",
"filter": [ "stemmer" ]
}
}
}
Я не предопределяю никаких сопоставлений. Вместо этого я полагаюсь на то, что сопоставления будут динамически добавляться при вставке документа.
Сопоставления отображаются следующим образом после вызова /my_index/_mapping
"short_bio" : {
"type" : "text",
"fields" : {
"keyword" : {
"type" : "keyword",
"ignore_above" : 256
}
}
},
Вы увидите, что при динамическом добавлении поля анализатор не определен в сопоставлении.
Означает ли это, что поиск будет автоматически использовать анализатор, созданный с помощью index ( std_analyzer
)? Или используется какой-то другой анализатор? Как мне заставить его использовать анализатор, который я хочу?
Если это уместно, я ищу, используя query_string
, чтобы воспользоваться преимуществами И / ИЛИ / НЕ / группировки
Спасибо!
Ответ №1:
Пожалуйста, обратитесь к объяснению анализатора строки запроса из официальных документов
(Необязательно, строковый) анализатор, используемый для преобразования текста в строке запроса в токены. По умолчанию используется анализатор времени индексации, сопоставленный для default_field. Если анализатор не сопоставлен, используется анализатор индекса по умолчанию.
Это означает, что в вашем случае, поскольку вы не определили какой-либо явный анализатор, строка запроса будет использовать стандартный анализатор для текстовых полей и ключевое слово, известное как анализатор без операций для keyword
полей.
Также не путайте с анализатором index по умолчанию, вы можете просто проверить это, перейдя по этой официальной ссылке.
Также, как упоминалось в документах, строка запроса возвращает ошибки из-за недопустимого синтаксиса, и ваш вариант использования AND / OR / NOT может быть легко обработан предпочтительным логическим запросом
Комментарии:
1. @Elasticsearch_Ninja еще раз спасибо! Именно то, что я искал! Также спасибо за ссылку на логические запросы. Я посмотрю