Ich versuche meine Datenbank zu durchsuchen und in der Lage sein, Groß/Kleinschreibung Filterausdrücke zu verwenden, aber ich habe festgestellt, während query
's anwenden Analysatoren, kann ich nicht herausfinden, wie man einen Kleinbuchstaben Analysator anwenden auf einer gefilterten Suche. Hier ist die Abfrage:Elasticsearch Kleinbuchstaben Filter Suche
{
"query": {
"filtered": {
"filter": {
"bool": {
"should": [
{
"term": {
"language": "mandarin" // Returns a doc
}
},
{
"term": {
"language": "Italian" // Does NOT return a doc, but will if lowercased
}
}
]
}
}
}
}
}
ich einen Typ haben languages
, die ich verwendet haben kleingeschrieben:
"analyzer": {
"lower_keyword": {
"type": "custom",
"tokenizer": "keyword",
"filter": "lowercase"
}
}
und eine entsprechende Abbildung:
"mappings": {
"languages": {
"_id": {
"path": "languageID"
},
"properties": {
"languageID": {
"type": "integer"
},
"language": {
"type": "string",
"analyzer": "lower_keyword"
},
"native": {
"type": "string",
"analyzer": "keyword"
},
"meta": {
"type": "nested"
},
"language_suggest": {
"type": "completion"
}
}
}
}
Also, wenn ich tho Begriff wollte kleingeschrieben werden, würde ich die tokenizer zu einem Klein ein ändern und alles indizieren? – Maruf
Nein, es ist bereits während des Indexierens aufgrund des Kleinbuchstabenfilters kleiner. Das Problem besteht darin, dass Sie einen Abfragetyp verwenden müssen, der ebenfalls analysiert wird - Termfilter nicht. –
Würdest du eine bessere Leistung sehen, wenn du deine Eingabe einfach gesenkt hast, so dass du einen Termfilter weiter verwenden kannst, anstatt einen Abfragefilter zu verwenden? – odyth