简体   繁体   English

使用Java API的Elasticsearch FunctionScore查询

[英]Elasticsearch FunctionScore query using Java API

I need to implement the below function_score query using Java APIs. 我需要使用Java API实现以下function_score查询。 I couldn't find any official documentation for function_score query in the Java API section of elasticsearch 我在elasticsearch的Java API部分中找不到关于function_score查询的任何官方文档

"function_score": {
    "functions": [
        {
            "boost_factor": "3",
            "filter": {
                 "terms" : {"course_cd" : ["writ100", "writ112", "writ113"] }   
            }
        }
    ],
    "query": {
          "match" : {
               "party_id" : "12"
          }
     }
}

Please help! 请帮忙!

Thanks to Jörg 感谢Jörg

import org.elasticsearch.action.search.SearchRequest;
import org.elasticsearch.index.query.functionscore.FunctionScoreQueryBuilder;
import java.util.Arrays;
import static org.elasticsearch.client.Requests.searchRequest;
import static org.elasticsearch.index.query.FilterBuilders.termsFilter;
import static org.elasticsearch.index.query.QueryBuilders.matchQuery;
import static org.elasticsearch.index.query.functionscore.ScoreFunctionBuilders.factorFunction;
import static org.elasticsearch.search.builder.SearchSourceBuilder.searchSource;

public class FunctionScoreTest {

    public void testFunctionScore() {
        SearchRequest searchRequest = searchRequest()
                .source(searchSource().query(new FunctionScoreQueryBuilder(matchQuery("party_id", "12"))
                        .add(termsFilter("course_cd", Arrays.asList("writ100", "writ112", "writ113")), factorFunction(3.0f))));
    }
}

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM