Java APIを使用して以下のfunction_scoreクエリを実装する必要があります。私はこのJava APIを使用したElasticsearch FunctionScoreクエリの使用方法
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();
のようなJava APIを使用し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のセクションでfunction_scoreクエリのための任意の公式ドキュメントを見つけることができなかったが、それは
私を助けてくれてありがとう、それは動作し、私はelasticsearch java-apiのドキュメントを見つける方法を知りたいですか?私は、コンビネーションファンクションのような公式のドキュメントを見つけることができません.REPLACE、私もconstパラメータを知らない... – kevin
あなたは単にAPIドックを見れば、それを簡単に見つけることができます。クラスを調べると、署名付きのAPIが見つかります:public FunctionScoreQueryBuilder boostMode(CombineFunction combineFunction) – Rahul