Ich habe eine kurze Frage, die scheint einfach zu sein, aber ich konnte bisher keine Antwort finden.Elasticsearch GET das letzte Dokument für ein bestimmtes Feld, wenn es existiert
Ich möchte auf einem Elasticsearch-Knoten das letzte Dokument abrufen, das einem Datumsfeld zugewiesen wurde. Aber ich möchte das letzte Dokument haben, nur für Dokumente, die ein bestimmtes Feld enthalten.
Zum Beispiel lassen Sie uns sagen, dass ich die letzten Kauf erhalten möchten, die das Feld "Promotioncode" enthält:
Abfrage:
http://elasticsearch:9200/store1/purchase/_search?q=vendor:Marie&size=1&sort=date:desc
wo store1 mein Index ist, Kauf ein Dokumenttyp
Lassen Sie uns jetzt sagen, ich habe diese beiden Dokumente in meinem Elasticsearch:
"hits": [
{
"_index": "store1",
"_type": "purchase",
"_id": "1",
"_score": 1,
"_source": {
"date": "2016-03-16T12:53:16.000Z",
"vendor": "Marie",
"promotionCode": "XYZ123"
}
},
{
"_index": "store1",
"_type": "purchase",
"_id": "2",
"_score": 1,
"_source": {
"date": "2016-03-18T12:53:16.000Z",
"vendor": "Marie"
}
}
]
Die obige Abfrage wird das Dokument von id 2, abrufen, aber ich werde kein Feld „Promotioncode“ in meinem Ergebnis.
Wenn ich das letzte Dokument mit einem bestimmten Feld erhalten möchte, wie mache ich das?
Ich erforschte „Felder“ Filter, sondern nur zurück Leeres Dokument senden, wenn das Feld nicht enthalten ist, und ich Quelle Filterung lesen, aber nicht sicher, ob es das tut, was ich will ...
Vielen Dank für irgendeinen Hinweis!
Ich versuchte diese Abfrage: ' http: // Elasticsearch: 9200/store1/kaufen/_search?q = vendor: Marie & size = 100 & pretty = true & sort = sendDatum: desc & filter = {"bool": {"must_not": {"fehlendes": {"field": "promotionCode"}}} ' Aber es gab mir die 100 meisten zurück recents-Dokumente, auch wenn es nicht den "promotionCode" enthält. Mache ich das richtig ? – Alex
Sie müssen den JSON auf einen Körper zu einer POST-Anfrage setzen. Wenn Sie Ansichtsergebnisse im Browser benötigen, können Sie die Erweiterung "postman" für Chrome verwenden. – skal88
Oh ok, das ist, was ich dachte, es ist eine POST-Anfrage ... Ich habe bereits Postman (yup ist ein großer REST-Client!), Aber ich dachte, ich könnte es mit dem GET-Verb erreichen. – Alex