Il seguente range_query restituisce un risultato come previsto:query in elasticsearch con intervalli multipli su più date
{"query": {
"bool": {
"must": [
{
"range": {
"created_at": {
"gte": "2013-12-09"
}
}
}
]
}
}
}
Ma e-ing insieme diverse query gamma, restituisce nulla:
{"query": {
"bool":{
"must": [
{
"and": [
{
"range": {
"created_at": {
"gte": "2013-12-09"
}
}
},
{
"range": {
"happens_on": {
"lte": "2013-12-16"
}
}
},
{
"range": {
"created_at": {
"lte": "2013-12-14"
}
}
}
]
}
]
}
}
}
Qual è la modo corretto di utilizzare più range_queries su più campi?
MODIFICA: Ah, ok, quindi è qui che utilizzo un filtro_filario invece che range_query? Sembrava promettente, quindi ho riscritto la mia query utilizzando solo un filtro a intervallo singolo. Pubblicando tutto qui, nel caso in cui sto rovinando la query da qualche altra parte. Sto eseguendo una GET, e tutto all'interno della chiave sorgente è in realtà JSON, ma ho rimosso il sfuggito i trattini per migliorare la leggibilità:
{
"source": {
"filtered": {
"filter": {
"and": [
{
"term": {
"restricted": false
}
},
{
"not": {
"term": {
"deleted": true
}
}
},
{
"range": {
"happens_on": {
"lte": "2013-12-16"
}
}
}
]
},
"query": {
"bool": {
"must": [
]
}
}
},
"from": 0,
"size": 10
}
}
Purtroppo, il mio problema è sempre lo stesso: non sto ottenendo alcun risultato .
EDIT2: Quindi, scendendo nel vicolo di intervalli all'interno di una clausola obbligata come suggeriva Njal. Questo mi dà una query multi-range come questa:
{
"source": {
"filter": {
"and": [
{
"term": {
"restricted": false
}
},
{
"not": {
"term": {
"deleted": true
}
}
}
]
},
"from": 0,
"query": {
"bool": {
"must": [
{
"range": {
"happens_on": {
"gte": "2013-12-06"
}
}
},
{
"range": {
"created_at": {
"gte": "2013-12-15"
}
}
},
{
"range": {
"happens_on": {
"lte": "2013-12-17"
}
}
},
{
"range": {
"created_at": {
"lte": "2013-12-17"
}
}
}
]
}
},
"size": 10
}
}
Ancora nessun risultato restituito. Sto facendo degli errori evidenti qui?
Grazie per la risposta e scusa per la mia confusione su questo. Cercherò di annidare i miei intervalli all'interno della clausola must. – thomax
Ok, ho provato il tuo suggerimento, vedi il mio EDIT2 nella domanda. Ancora nessun risultato. Potrebbe essere correlato alla formattazione della data? – thomax
Riiiight. Così è venuto fuori il motivo per cui il suggerimento di Njals apparentemente non ha funzionato per me è che il mio test è stato incasinato. Ora il test è fisso e le rocce di soluzione. Grazie! – thomax