このページによると、アナライザーはクエリごと、フィールドごと、またはインデックスごとに指定できます。
でindex time
、Elasticsearch は次の順序でアナライザーを検索します。
- で定義されたアナライザー
field mapping
。
default
インデックス設定で指定されたアナライザー。
standard
アナライザー。
にはquery time
、さらにいくつかのレイヤーがあります。
- で定義されたアナライザー
full-text query
。
search_analyzer
フィールド マッピングで定義された。
- で定義されたアナライザー
field mapping
。
default_search
インデックス設定で指定されたアナライザー。
default
インデックス設定で指定されたアナライザー。
standard
アナライザー。
一方、このページは重要なことを示しています。
アナライザーは論理名で登録されます。その後、マッピング定義または特定の API から参照できます。何も定義されていない場合は、デフォルトが使用されます。何も導出できない場合にデフォルトで使用されるアナライザーを定義するオプションがあります。
したがって、カスタム アナライザーをデフォルトとして定義する唯一の方法は、事前定義されたアナライザーの 1 つ (この場合は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"
]
}
}
}
}
}