有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

使用Java API的Elasticsearch函数分数查询

我需要使用JavaAPI实现下面的函数\u score查询。我在elasticsearch的JavaAPI部分找不到任何关于函数\u分数查询的官方文档

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

请帮忙


共 (1) 个答案

  1. # 1 楼答案

    多亏了约格

    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))));
        }
    }