Sto provando a interrogare un indice Elasticsearch per un intervallo di tempo, e inoltre ho un termine abbinato a un valore stringa specifico.Interrogare Elasticsearch combinando un intervallo e un termine match json format
Ho cercato questa domanda, che sembra abbastanza semplice:
{
"query" : {
"bool": {
"must": [
{
"match": {
"method": "/customer/help"
}
},
{
"range" : {
"startTime": {
"from" : "2015-10-20T13:00-04:00",
"to" : "2015-10-20T14:00-04:00"
}
}
}
]
}
}
}
In questo caso, voglio che tutti i documenti all'interno di un determinato intervallo di tempo che hanno anche un valore metodo "/customer/help"
.
Nei miei risultati, sto ricevendo risultati che rientrano nell'intervallo di tempo, ma sto ricevendo documenti con vari valori per il campo "method"
, quando voglio solo risultati con "/customer/help"
in quel campo.
I vari valori per i valori di campo "metodo" che hanno "cliente" o "aiuto" insieme ai risultati che hanno l'atteso "cliente/aiuto"? In quel caso il problema è che Elasticsearch sta analizzando il campo (probabilmente analizzatore standard se non hai specificato la mappatura). Se non si prevede di utilizzare l'analizzatore per quel campo in futuro, è possibile impostare la proprietà "index": "not_analyzed" per quel campo. – eemp
Gli altri valori hanno cliente/ ma ciò che è strano è che se eseguo una query separatamente dove sto escludendo l'intervallo, ottengo solo risultati dove il metodo = "cliente/aiuto". –
Cosa stai passando per la dimensione param? È solo una coincidenza e stai vedendo solo un sottoinsieme di tutti i risultati quando tagli la query di intervallo? – eemp