Ich versuche, einen ElasticSearch-Index nach einem Zeitbereich abzufragen, und zusätzlich habe ein Term einen bestimmten String-Wert.ElasticSearch abfragen, indem ein Bereich und ein Term-Match-JSON-Format kombiniert werden
Ich habe diese Abfrage versucht, die ziemlich einfach scheint:
{
"query" : {
"bool": {
"must": [
{
"match": {
"method": "/customer/help"
}
},
{
"range" : {
"startTime": {
"from" : "2015-10-20T13:00-04:00",
"to" : "2015-10-20T14:00-04:00"
}
}
}
]
}
}
}
In diesem Fall möchte ich alle Dokumente innerhalb des vorgegebenen Zeitbereich, der auch ein Verfahren Wert von "/customer/help"
haben.
In meinen Ergebnissen erhalte ich Ergebnisse, die innerhalb des Zeitbereichs liegen, aber ich bekomme Dokumente, die verschiedene Werte für das Feld "method"
haben, wenn ich nur Ergebnisse mit "/customer/help"
in diesem Feld möchte.
Sind die verschiedenen Werte für "Methode" Feldwerte entweder "Kunde" oder "Hilfe" zusammen mit Ergebnissen, die die erwartete "Kunde/Hilfe" haben? In diesem Fall besteht das Problem darin, dass Elasticsearch das Feld analysiert (wahrscheinlich Standardanalysator, wenn Sie das Mapping nicht angegeben haben). Wenn Sie nicht erwarten, den Analysator für dieses Feld in Zukunft zu verwenden, können Sie die Eigenschaft "index": "not_analyzed" für dieses Feld festlegen. – eemp
Die anderen Werte haben Kunde/ aber was ist seltsam ist, dass wenn ich eine Abfrage separat ausführen, wo ich den Bereich ausschließe, bekomme ich nur Ergebnisse, wo die Methode = "Kunde/Hilfe". –
Was passierst du für die Größe param? Ist es nur ein Zufall und Sie sehen nur eine Teilmenge aller Ergebnisse, wenn Sie die Bereichsabfrage ausschneiden? – eemp