Ich habe ein Feld in einem ElasticSearch-Feld, das ich nicht analysiert haben möchte, ich. e. es sollte wörtlich gespeichert und verglichen werden. Die Werte enthalten Buchstaben, Zahlen, Leerzeichen, Bindestriche, Schrägstriche und möglicherweise andere Zeichen.Wie nicht in ElasticSearch analysieren?
Wenn ich in meinem Mapping für dieses Feld keinen Analysator gebe, verwendet der Standardwert immer noch einen Tokenizer, der meine wortwörtliche Zeichenfolge in Wörterklumpen hackt. Ich will das nicht.
Gibt es einen super einfachen Analysator, der im Grunde nicht analysiert? Oder gibt es eine andere Art zu bezeichnen, dass dieses Feld nicht analysiert werden soll?
Ich erstelle nur den Index, ich mache nichts anderes. Ich kann Analysatoren wie "Englisch" für andere Felder verwenden, die eingebaute Namen für vorkonfigurierte Analysatoren zu sein scheinen. Gibt es eine Liste mit anderen Namen? Vielleicht gibt es eines, das meinen Bedürfnissen entspricht (nämlich nichts mit dem Input zu tun). derzeit
Das ist mein Mapping:
{
"my_type": {
"properties": {
"my_field1": { "type": "string", "analyzer": "english" },
"my_field2": { "type": "string" }
}
}
}
my_field1
ist sprachabhängig; das scheint zu funktionieren. my_field2
soll wörtlich sein. Ich würde gerne einen Analysator geben, der einfach nichts macht.
Ein Beispielwert für my_field2
wäre "B45c 14/04"
.
Ah! Das habe ich gesucht. Ich stolperte mehrmals über dieses 'not_analyzed', dachte aber immer daran, dass es überhaupt nicht durchsucht werden kann (anscheinend wird dafür" no "verwendet). Der Link zur Dokumentation war aufschlussreich, danke! (Und bei gegebener Zeit werde ich diese Antwort akzeptieren, es sei denn, es erscheint noch hilfreicher.) – Alfe
@Alfe, Sie können [diese Antwort für weitere Informationen] haben (http://stackoverflow.com/questions/16911633/not-indexed-field -is-stored-in-index/16923084 # 16923084) einschließlich der Option 'index: no' – ramseykhalaf
Können wir es global so einstellen, analysiert es nicht String-Typ für alle? – coderek