निम्न स्वरूप में ES सूचकांक में JSON को देखते हुए:Elasticsearch QueryBuilder मैच एकाधिक शर्तें
{
"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();
स्थान geo_point रूप में सूचीबद्ध किया है? – imotov
हां, इसे 'geo_point' के रूप में मैप किया गया है। – ahmedyha