I'm trying to make a query with Elasticsearch5 Java API and I'm getting a little bit confused.
I want to transalte this query to Java API:
{
"query":{
"function_score": {
"query": {
"bool": {
"must": [
{"term": { "machineNumber": "2" }},
{ "range" : {"epoch" : {
"gte" : 1493546400000,
"lte" : 1493967600000
}}}
]
}
},
"gauss": {
"epoch": {
"origin": "1493775811046",
"scale": "1s"
}
}
}
}
}
I've tryied several things but the latest thing I've tryied is as follows:
QueryBuilder qb = boolQuery()
.must(QueryBuilders.termQuery("machineNumber", machineNumber))
.must(QueryBuilders.rangeQuery("epoch").gte(startDate).lte(endDate));
FilterFunctionBuilder[] functions = {
new FunctionScoreQueryBuilder.FilterFunctionBuilder(
ScoreFunctionBuilders.gaussDecayFunction("epoch", "1493775811046", "1s")
)
};
SearchResponse nearest_temp_ej = client.prepareSearch("temperature-test-2")
.setTypes("type")
.setSearchType(SearchType.DFS_QUERY_THEN_FETCH)
.setQuery(QueryBuilders.functionScoreQuery(qb).filterFunctionBuilders(functions))
.execute().actionGet();
This code doesn't work fine, the IDE tells me:
method filterFunctionBuilders in class functionScoreQueryBuilder cannot be applied to given types.
Any help would be appreciated.