Jemand bitte helfen Sie mir, expires_at IS NULL
zur ES-Abfrage unten hinzuzufügen. Ich schaute in Dealing with Null Values Abschnitt für missing
Filter, aber die Art, wie ich es verwendet (unten angezeigt) bewirkt, dass nicht abgelaufene Dokumente nicht im Ergebnis erscheinen, so offensichtlich mache ich hier etwas falsch.Die Auswahl von Dokumenten mit einem bestimmten Feld wird in Elasticsearch auf NULL gesetzt.
Hinweis: Ich möchte nicht or query
verwenden, weil es deprecated in 2.0.0-beta1 ist.
QUERY
{
"query": {
"filtered": {
"query": {
"bool": {
"must": [
{
"term": {
"order_id": "123"
}
},
{
"term": {
"is_active": 1
}
},
{
"range": {
"expires_at": {
"gt": "2016-07-01T00:00:00+0000"
}
}
}
]
}
}
}
}
}
Das ist, worauf ich bin mit dem Ziel:
SELECT * FROM orders
WHERE
order_id = '123' AND
is_active = '1' AND
(expires_at > '2016-07-01T00:00:00+0000' OR expires_at IS NULL)
Dies ist, was ich tat, aber un-abgelaufene Dokumente zeigen nicht so in diesem Fall nach oben das ist falsch.
{
"query": {
"filtered": {
"filter": {
"missing": {
"field": "expires_at"
}
},
"query": {
"bool": {
"must": [
......
......
]
}
}
}
}
}
Meine ES Version:
{
"status" : 200,
"name" : "Fan Boy",
"version" : {
"number" : "1.3.4",
"build_hash" : "a70f3ccb52200f8f2c87e9c370c6597448eb3e45",
"build_timestamp" : "2014-09-30T09:07:17Z",
"build_snapshot" : false,
"lucene_version" : "4.9"
},
"tagline" : "You Know, for Search"
}
Fehler bekommen: '{ "Code": 500, "message":" SearchPhaseExecutionException [konnte nicht ausgeführt werden phase [query], alle Shards fehlgeschlagen shardFailures {[3JYUoUpWRya90oiKlk2RGQ] [my_index_dev] [0]: SearchParseException [[my_index_dev] [0]: von [-1], size [-1]: Parse Fail [konnte die Quelle nicht analysieren. ... tatsächliche Abfrage erscheint hier .... verschachtelt: QueryParsingException [[my_index_dev] No Abfrage registriert für [fehlende]]; ' – BentCoder
Aktualisierte die Abfrage. Hab nicht gedacht, dass du eine so alte Version benutzt. Übrigens solltest du upgraden. –
Das ist der eine! Vielen Dank. Upgrade wird eines Tages stattfinden :) – BentCoder