2014-11-06 16 views
9

Ich habe die folgende Abfrage:Elasticsearch Datumsbereich

{ 
    "query": { 
    "query_string": { 
     "query": "searchTerm", 
     "default_operator": "AND" 
     } 
    }, 
    "facets": { 
     "counts": { 
     "date_histogram": { 
     "field": "firstdate", 
     "interval": "hour" 
     } 
    } 
} 

und ich möchte einen Datumsbereich, um es hinzuzufügen, um Werte für das Feld Firstdate, die innerhalb eines bestimmten vom/zum Intervall sind abzurufen. Irgendwelche Vorschläge, wie es geht? Danke vielmals!

Antwort

11

Sie brauchen nur einen range Filter zu Ihrer Anfrage hinzuzufügen:

{ 
"query":{ 
    "filtered": { 
    "query": { 
     "query_string": {"query": "searchTerm", "default_operator": "AND" } 
    }, 
     "filter" : { 
     "range": {"firstdate": {"gte": "2014-10-21T20:03:12.963","lte": "2014-11-24T20:03:12.963"}} 
    } 
    } 
}, 
"facets": { 
"counts": { 
    "date_histogram": { 
     "field": "firstdate", 
     "interval": "hour" 
     } 
    } 
    } 
} 
10

Boolean Abfrage zu arbeiten,

{ 
    "query" :{ 
     "bool" : {    
      "must" : { 
       "range": {"firstdate": {"gte": "2014-10-21T20:03:12.963","lte": "2014-11-24T20:03:12.963"}} 
      }, 

      "must" : { 
      "query_string": { 
       "query": "searchTerm", 
       "default_operator": "AND" 
      } 
      } 

     } 
    }, 

    "facets": { 
     "counts": { 
      "date_histogram": { 
      "field": "firstdate", 
      "interval": "hour" 
      } 
     } 
    } 

} 
+0

Wo ist die ' "Firstdate"' kommen aus? Es ist nicht in der Dokumentation. –

+0

@Daniel_L, das war nur ein Beispiel. Entschuldigung, wenn ich dich verwirrt habe. –

+0

'firstdate' könnte sehr gut etwas wie' @ timestamp' sein. Es unterscheidet sich pro Index –