Согласно этой странице, анализаторы могут запрос, для каждого поля или для каждого индекса.
На index time
Elasticsearch будет искать анализатор в таком порядке:
- Анализатор, определенный в файле
field mapping
.
- Анализатор с именем
default
в настройках индекса.
- Анализатор
standard
.
В query time
есть еще несколько слоев:
- Анализатор, определенный в файле
full-text query
.
search_analyzer
, определенный в сопоставлении полей.
- Анализатор, определенный в файле
field mapping
.
- Анализатор с именем
default_search
в настройках индекса.
- Анализатор с именем
default
в настройках индекса.
- Анализатор
standard
.
С другой стороны, эта страница указать на важную вещь:
Анализатор регистрируется под логическим именем. Затем на него можно ссылаться из определений сопоставления или определенных API. Если ничего не определено, используются значения по умолчанию. Существует возможность определить, какие анализаторы будут использоваться по умолчанию, если ни один из них не может быть получен.
Таким образом, единственный способ определить пользовательский анализатор по умолчанию — переопределить один из предопределенные анализаторы, в данном случае анализатор default
. это означает, что мы не можем использовать произвольное имя для нашего анализатора, он должен называться default
вот простой пример настройки индекса:
{
"settings": {
"number_of_shards": 1,
"number_of_replicas": 0,
"analysis": {
"char_filter": {
"charMappings": {
"type": "mapping",
"mappings": [
"\\u200C => "
]
}
},
"filter": {
"persian_stop": {
"type": "stop",
"stopwords_path": "stopwords.txt"
}
},
"analyzer": {
"default": {<--------- analyzer name must be default
"tokenizer": "standard",
"char_filter": [
"charMappings"
],
"filter": [
"lowercase",
"arabic_normalization",
"persian_normalization",
"persian_stop"
]
}
}
}
}
}
person
Saeed Zhiany
schedule
25.10.2016