Filtrer selon un intervalle de 2 dates ne me ramène aucun resultat


(Karim Kolli) #1

Bonjour,
Je souhaite realiser une recherche en filtrant un champs (stocké en millisecondes) selon un intervalle de temps.

J'utilise un RangeFilter mais la requete ne me ramene rien.

Voici mon Code :
RangeQueryBuilder rangeDate =QueryBuilders.rangeQuery("dateDepart").to(datefin.getTime());

FilterBuilder dateFilter =
FilterBuilders.andFilter(FilterBuilders.rangeFilter(rangeDate.toString()));

Client client = new TransportClient().addTransportAddress(new InetSocketTransportAddress("127.0.0.1",9300));
SearchResponse response = client.prepareSearch("myNode")
.setTypes("myIndex")
.setSearchType(SearchType.QUERY_AND_FETCH)
.setQuery(QueryBuilders.filteredQuery(QueryBuilders.matchAllQuery(),dateFilter) ) // Query
.setFrom(0).setSize(60).setExplain(true)
.execute()
.actionGet();

LOGGER.info("Nombre de Reponse :"+response.getHits().getTotalHits());

et j'obtiens :
---> Nombre de Reponse :0

PS: j'ai bien verifier que j'ai des documents avec une date repondant aux criteres , ex :
{
_index: "myNode"
_type: "myIndex"
_id: "9072834"
_score: 1
_source: {
idMetaEvenement: 9072834
dateDepart: 1362787200000
...

1362787200000 correspondant a : 29/03/2013

Pouvez-vous m'aider ?


(Tanguy) #2

Bonjour Karim,

J'ai bougé ton post de la catégorie "Elasticsearch" à la catégorie "Elastic in your native tongue" car ton message est en français.

Je pense que tu devrais indexer tes dates au format date avec timezone puis d'utiliser un filtre de type "range" directement et non encapsulé dans un filtre "and".

Note que la prochaine version d'elasticsearch ne fait plus de distinction query/filtre (https://www.elastic.co/blog/elasticsearch-2.0.0.beta1-coming-soon) et que tu pourras remplacer ta filtered_query en requête booléenne.


(Karim Kolli) #3

Bonjour Tanguy,

Merci pour ta reponse.

Je suivrais tes conseils dans l'avenir, par contre pour les 100 000 documents que j'ai deja dans elasticsearch, il n'ya pas de solution ?

Cordialement

PS: pour le prochain post, je le saisirais aussi en anglais.


(system) #4