Elasticsearch QueryBuilder соответствует нескольким терминам

Дан JSON в индексе ES в следующем формате:

{
    "pin": {
        "id": 123,
        "location": {
            "lat": 456,
            "lon":-789
        }
    }
}

Следующее получает документ, соответствующий полю id:

client.prepareSearch("index_name")
        .setTypes("pin")
        .setQuery(QueryBuilders.termQuery("id", 123))
        .execute()
        .actionGet();

Вместо этого я пытаюсь соответствовать нескольким полям, т.е. ( location.lat, location.lon).

QueryBuilders.termQuery(); // accepts only a single term

Пробовал несколько вариантов, но ни один из них не работает, например:

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();
8
задан Noel Yap 17 March 2014 в 19:05
поделиться