J'essaie d'extraire des documents qui sont plus ou moins longs que la date spécifiée. J'utilise le searchQuery ci-dessous à cette fin.Données de ressort Elasticsearch pour extraire Les documents entre deux dates génèrent une requête erronée
QueryBuilder queryBuilder = QueryBuilders.boolQuery()
.must(QueryBuilders.rangeQuery("date")
.gt("2015-06-25T00:00:00")
.lt("2015-06-25T00:00:00"));
La requête générée à partir du constructeur de requêtes ci-dessus est semblable à ceci.
{
"bool" : {
"must" : [ {
"range" : {
"date" : {
"from" : "2015-06-25T00:00:00",
"to" : "2015-06-25T00:00:00",
"include_lower" : false,
"include_upper" : false
}
}
}
} ]
}
Même quand j'utiliser les fonctions gt et lt de rangequery la requête est générée comme de et à.
Quelle est la solution pour qu'une requête puisse être générée comme ceci.
{
"bool" : {
"must" : [ {
"range" : {
"date" : {
"gt" : "2015-06-25T00:00:00",
"lt" : "2015-06-25T00:00:00",
"include_lower" : false,
"include_upper" : false
}
}
}
} ]
}
C'est la classe de test que j'ai écrite. Toute suggestion sur la façon d'y parvenir dans Spring Data Elasticsearch serait utile.
Merci pour la réponse. J'ai essayé cette requête mais je n'ai pas récupéré les enregistrements du serveur. C'est la requête ** QueryBuilder qb = QueryBuilders.boolQuery(). Must (QueryBuilders.rangeQuery ("receiptdate"). Gte ("2015-06-25T00: 00: 00"). Lte ("2015-07-25T00: 00:00 ")) ** – sumanth
Pouvez-vous montrer un document qui devrait être retourné? – Val
Ceci est un exemple JSON { "_index": "test", "_type": "test", "_id": "1015", "_version": 1, "_SCORE": 1, "_source": { "id": "1015", "createdDate": "2015-07-16T00: 00: 00.000Z ", " numéro de reçu ":" 10150000187831 ", " mode de paiement ":" espèces ", " receiptdate ":" 2015-07-16T00: 00: 00.000Z ", " installmentfrom ":" 2015-04-01 », "installmentto": "30.09.2015", "reductionamount": null, "receiptcreator": "" }} – sumanth