Nach dieser page Analysatoren angegeben pro-Abfrage werden kann, pro-Feld oder pro-Index.
Bei index time
, Elasticsearch werden in dieser Reihenfolge für einen Analysator aussehen:
- Der Analysator im
field mapping
definiert.
- Ein Analysator namens
default
in den Indexeinstellungen.
- Der
standard
Analysator.
Bei query time
, gibt es noch ein paar Schichten:
- Der Analysator in einem
full-text query
definiert.
- Die im Feld Mapping definierte
search_analyzer
.
- Der Analysator definiert in der
field mapping
.
- Ein Analysator namens
default_search
in den Indexeinstellungen.
- Ein Analysator namens
default
in den Indexeinstellungen.
- Der
standard
Analysator.
Auf der anderen Seite, diese page Punkt zu wichtigen Sache:
Ein Analysator unter einem logischen Namen registriert ist. Es kann dann von Mapping-Definitionen oder bestimmten APIs referenziert werden. Wenn keine definiert sind, werden Standardwerte verwendet. Es gibt eine Option zu definieren, welche Analysatoren standardmäßig verwendet werden, wenn keine abgeleitet werden können.
So ist die einzige Möglichkeit, einen eigenen Analysator als Standard zu definieren, überschreibt eine der pre-defined analyzers, in diesem Fall den default
Analysator.
{
"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"
]
}
}
}
}
}
Arbeiten auf '2.4.6' dank: es bedeutet, dass wir nicht einen beliebigen Namen für unseren Analysator verwenden können, muss es
default
hier ein einfaches Beispiel für Indexeinstellung genannt werden. Die andere Antwort hat nicht funktioniert. – cahen
@cohen Ich bin froh, dass es dir helfen könnte. –