Ich versuche, Wildcard-Abfragen über das _all-Feld durchzuführen. Ein Beispiel Abfrage könnte sein:Wildcard Abfrage über _all Feld auf Elasticsearch
GET index/type/_search
{
"from" : 0,
"size" : 1000,
"query" : {
"bool" : {
"must" : {
"wildcard" : {
"_all" : "*tito*"
}
}
}
}
}
Die Sache ist die, dass eine Wildcard-Abfrage muss die _all Feld not_analyzed zu verwenden, da sonst die Abfrage wird nicht funktionieren. Weitere Informationen finden Sie unter ES documentation.
Ich versuchte, die mappings over the _all field mit dieser Anfrage zu setzen:
PUT index
{
"mappings": {
"type": {
"_all" : {
"enabled" : true,
"index_analyzer": "not_analyzed",
"search_analyzer": "not_analyzed"
},
"_timestamp": {
"enabled": "true"
},
"properties": {
"someProp": {
"type": "date"
}
}
}
}
}
Aber ich bin immer der Fehler Analysator [not_analyzed] nicht für das Feld [_all] gefunden.
Ich möchte wissen, was ich falsch mache und ob es eine andere (bessere) Möglichkeit gibt, diese Art von Abfragen durchzuführen.
Thanks.-
Ich habe versucht, NGrams und funktioniert viel besser. Das Problem mit NGrams ist, dass viel Speicherplatz belegt wird. Kennst du irgendeine Lösung dafür? –
Ja, NGrams benötigen viel Speicherplatz (und mehr CPU). Sie können mit den Einstellungen für min_gram und max_gram experimentieren. In Anbetracht der Art und Weise, in der die Ngramme gespeichert werden, wird durch die Einstellung zu niedrig oder zu hoch Speicherplatz belegt. In einigen Fällen verbrauchen [edgeNGrams] (https://www.elastic.co/guide/en/elasticsearch/reference/current/analysis-edgengram-tokenizer.html) möglicherweise weniger Ressourcen, aber verankert das Ngram am Anfang des Zeichen. – scottjustin5000