Dada JSON en el índice de ES en el siguiente formato:Elasticsearch QueryBuilder coincidencia múltiple Términos
{
"pin": {
"id": 123,
"location": {
"lat": 456,
"lon":-789
}
}
}
El siguiente obtiene el documento correspondiente al campo id
:
client.prepareSearch("index_name")
.setTypes("pin")
.setQuery(QueryBuilders.termQuery("id", 123))
.execute()
.actionGet();
En cambio, yo estoy tratando de igualar campos múltiples, es decir. (location.lat
, location.lon
).
QueryBuilders.termQuery(); // accepts only a single term
Probamos algunas alternativas, pero ninguna de ellas parece que funciona, por ejemplo:
QueryBuilder queryBuilder = QueryBuilders.boolQuery()
.must(QueryBuilders.termQuery("location.lat", 456))
.must(QueryBuilders.termQuery("location.lon", -789));
client.prepareSearch("index_name")
.setTypes("pin")
.setQuery(queryBuilder)
.execute()
.actionGet();
es la ubicación indexado como geo_point? – imotov
Sí, está mapeado como 'geo_point'. – ahmedyha