Ich bin neu in ElasticSearch, also bitte gehen Sie einfach auf mich. Ich habe auf elastic.co geschaut und viel gegoogelt, um den richtigen Java-Filter und die zutreffende Abfrage zu finden, um nur die Dokumente abzurufen, die in den nächsten x Tagen ablaufen werden, wobei x ein Wert ist, der vom Benutzer übergeben wurde die Anwendung und ist auch die TTL auf jedem der Dokumente in Elastic festgelegt.ElasticSearch Java Anfrage zum Abrufen von Dokumenten in den nächsten x Tagen
Ich habe verschiedene Filter wie rangeFilter, boolFilter auf den FilterBuilders versucht, die in der Anfrage an Elastic passieren wie:
Raw Source: {
"from" : 0,
"size" : 20, "filter" : {
"bool" : {
"should" : {
"range" : {
"_ttl" : {
"from" : 2000,
"to" : 2160000000,
"include_lower" : false,
"include_upper" : true
}
}
}
}
},
"explain" : false,
"fields" : [ "_ttl", "_source" ],
"sort" : [ {
"created" : {
"order" : "desc"
}
} ]
}
Java-Code für die Suche ist wie folgt:
SearchRequestBuilder srb = client.prepareSearch(index).setTypes(type).addFields("_ttl", "_source")
.setSearchType(SearchType.DFS_QUERY_THEN_FETCH).setExplain(false);
if (query != null) srb.setQuery(query);
if (filter != null) srb.setPostFilter(filter);
LOG.debug("Raw Source: {}\n", srb.toString());
// Fetch the Document response from the index
SearchResponse response = srb.execute().actionGet();
wo Filter, der übergeben wird, ist:
(FilterBuilders.boolFilter().should(FilterBuilders.rangeFilter(_ttl).gt(2000).lte(2160000000)));
Andere Parameter wie Abfrage, Index , Typ wird dem Code übergeben. Derzeit werden nur Index und Typ an den Code übergeben und nicht abgefragt (null)
Die obige Abfrage zu Elastic ergibt null Treffer, also ist offensichtlich etwas nicht in Ordnung. Ich habe mehrere Dokumente, die innerhalb von 15 Tagen ablaufen. Jede Hilfe würde sehr geschätzt werden.
Dank
Welche Version von ES verwenden Sie? – Andre85
Verwendung der Version 0.90.10 – sanjuk21