Java API'lerini kullanarak aşağıdaki function_score sorgusunu kullanmam gerekir. Ben buJava API kullanarak Elasticsearch FunctionScore sorgusu nasıl kullanılır
RangeQueryBuilder queryStartDate = QueryBuilders.rangeQuery("startTime").gte(param.getStartTime())
.lte(param.getEndTime());
RangeQueryBuilder queryEndDate = QueryBuilders.rangeQuery("endTime").gte(param.getStartTime())
.lte(param.getEndTime());
// query
QueryBuilder querys = QueryBuilders.boolQuery().must(queryStartDate).must(queryEndDate);
// function
Map<String, Double> locationMap = new HashMap<String, Double>();
locationMap.put("lat", param.getLat());
locationMap.put("lon", param.getLng());
ScoreFunctionBuilder sfb2 = ScoreFunctionBuilders.gaussDecayFunction("location", locationMap, "1km")
.setOffset("2km");
//function_score
FunctionScoreQueryBuilder sa = new FunctionScoreQueryBuilder().boostMode("replace").add(sfb2);
//final search
SearchResponse response = client.prepareSearch().setIndices("film").setTypes("data").setQuery(sa)
.setQuery(querys).setSize(40).execute().actionGet();
gibi Java API kullanmak elasticsearch
{
"size": 40,
"query": {
"function_score": {
"functions": [
{
"gauss": {
"location": {
"origin": {
"lat": 39.99606,
"lon": 116.480484
},
"offset": "2km",
"scale": "3km"
}
}
}
],
"score_mode": "sum",
"boost_mode": "replace",
"query": {
"bool": {
"must": [
{
"range": {
"startTime": {
"from": "2016-04-12T12:00:00.000Z",
"to": "2016-04-12T16:00:00.000Z",
"include_lower": true,
"include_upper": true
}
}
},
{
"range": {
"endTime": {
"from": "2016-04-12T12:00:00.000Z",
"to": "2016-04-12T16:00:00.000Z",
"include_lower": true,
"include_upper": true
}
}
}
]
}
}
}
}
}
Java API bölümünde function_score sorgu için herhangi bir resmi belgelerine bulamadı ama
Bana yardım ettiğin için çok teşekkür ederim, işe yarıyor ve elasticsearch java-api belgelerini nasıl bulacağımı bilmek istiyorum. CombineFunction.REPLACE gibi resmi belgeleri bulamıyorum, const parametresini bile bilmiyorum ... – kevin
Sadece api belgesine bakarsanız kolayca bulabilirsiniz. Sadece sınıfa bakın ve imza ile bir api bulacaksınız: public FunctionScoreQueryBuilder boostMode (CombineFunction combineFunction) – Rahul