Версия Elasticsearch: 1.6.0
Последние месяцы я использую elasticsearch (только начал), и теперь у меня проблемы с ним. Вот некоторая информация о моей базе данных:
Индекс, который я использую, использует динамическое сопоставление по умолчанию (например: я не возился с его отображением). Мои объекты не должны содержать схемы. Также в индексе используется анализатор по умолчанию (я его тоже не трогал), поэтому index/_settings
выглядит так:
{
"default": {
"settings": {
"index": {
"creation_date": "1441808338958",
"uuid": "34Yn1_ixSqOzp9UotOE_4g",
"number_of_replicas": "1",
"number_of_shards": "1",
"version": {
"created": "1060099"
}
}
}
}
}
Вот у меня проблема: по некоторым значениям полей поиск не работает должным образом (я пришел к выводу, что это из-за анализатора). Пример: поле email
имеет значение [email protected]
; {"query":{"bool":{"must":[{"term":{"user.email":"[email protected]"}}]}}
не сработает, но использование значения термина просто «пользователь» работает (потому что оно каким-то образом токенизирует его, и нет токена с полным адресом электронной почты).
Вот что я хочу: мне нужен как поиск с подстановочными знаками (поиск плохого слова в тексте комментария), так и строгий поиск (например, по электронной почте для пример) в любом поле, тогда я буду использовать bool
и should
с term
или wildcard
.
Проблема в том, что я просто не могу сказать ему «хорошо, в этом поле вам следует использовать анализатор X», потому что все мои поля динамические.
Что я пробовал: в настройках индекса я ПОСТАВИЛ следующее: {"analysis":{"analyzer":{"default":{"type":"keyword"}}}}
; не работает: ничего не изменилось (я также не забыл перед этим закрыть индекс и открыть его).
Эта проблема вообще связана с анализаторами?