2016-04-14 22 views
0

Der Versuch, 'exaktes' Datumsabgleich mit Bereichsabfrage durchzuführen, aber ohne Erfolg. Ich habe agreement_start_date Feld mit folgenden AbbildungElastische Suche exakter Bereich für das Datum

"agreement_start_date" : { 
    "type" : "date", 
    "format" : "strict_date_optional_time||epoch_millis" 
} 

Ich habe einzelnes Dokument indiziert und es scheint gut werden indiziert.

curl "localhost:9200/cr/_search?pretty=true" -d '' 

{ 
    "took" : 35, 
    "timed_out" : false, 
    "_shards" : { 
    "total" : 5, 
    "successful" : 5, 
    "failed" : 0 
    }, 
    "hits" : { 
    "total" : 1, 
    "max_score" : 1.0, 
    "hits" : [ { 
     "_index" : "cr", 
     "_type" : "agreement_index", 
     "_id" : "570fe59b7f9e6f7f762129ed", 
     "_score" : 1.0, 
     "_source":{"agreement_start_date": "2016-04-14T18:46:51.268176+00:00"} 
    } 
} 

Ich will diesen Rekord mit einfacher Abfrage erhalten, die agreement_start_date mit bestimmtem Tag entspricht.

{ 
    "query": { 
    "bool": { 
     "must": { 
     "range": { 
      "agreement_start_date": { 
      "gte": "2016-04-14", 
      "lte": "2016-04-14", 
      "format": "yyyy-MM-dd" 
      } 
     } 
     } 
    } 
    } 
} 

Diese Abfrage gibt 0 Ergebnisse zurück. Wie man Abfrage in der elastischen Suche macht, die nur zur Verfügung gestellte Teile des Datums vergleicht?

Antwort

0

Es scheint, dass Rundungsdatum zum nächsten Tag die Arbeit erledigen.

{ 
    "query": { 
    "bool": { 
     "must": { 
     "range": { 
      "agreement_start_date": { 
      "gte": "2016-04-14||\d", 
      "lte": "2016-04-14||\d", 
      "format": "yyyy-MM-dd" 
      } 
     } 
     } 
    } 
    } 
} 

Diese Abfrage gibt indizierte Dokumente zurück.

0

ich verwendet, um dieses:

"range" : { 
    "agreement_start_date" : { 
     "gte": "2016-04-14", 
     "lte": "2016-04-14", 
     "format": "yyyy-MM-dd||yyyy-MM-dd", 
     "time_zone": "Asia/Seoul" 
    } 
}