java - 如何使用elasticsearch java API编写多个评分函数?

标签 java elasticsearch

我正在尝试使用 java api 编写我的 json Elasticsearch ,但不知道如何实现。这是我的 json 查询:

{
    "query": {
        "function_score": {
            "query": {
                ...
            },
            "functions": [
                {
                    "field_value_factor": {
                        "field": "boost_score",
                        "missing": 1,
                        "factor": 2
                    }
                },
                {
                    "gauss": {
                        "location": {
                            "origin": "11, 12",
                            "scale": "2km"
                        }
                    }
                }
            ],
            "score_mode": "multiply",
            "boost_mode": "multiply"
        }
    }
}

QueryBuilders.functionScoreQuery 不支持多个评分函数。 我使用elasticsearch客户端api 6.0.0

最佳答案

我找到了使用类似代码的解决方案

   FilterFunctionBuilder[] functions = new FilterFunctionBuilder[2];

   FieldValueFactorFunctionBuilder boostScoreBuilder = ScoreFunctionBuilders
             .fieldValueFactorFunction("boost_score")
             .missing(1)
             .factor(2);
     functions[0] = new FunctionScoreQueryBuilder.FilterFunctionBuilder(boostScoreBuilder);

     GeoPoint point = new GeoPoint(100.0, 5.0);
     GaussDecayFunctionBuilder geoBuilder = ScoreFunctionBuilders.gaussDecayFunction("location", point, GEO_SCALE, GEO_OFFSET, GEO_DECAY);
     functions[1] = new FunctionScoreQueryBuilder.FilterFunctionBuilder(geoBuilder);

     QueryBuilders
     .functionScoreQuery(termQueryBuilder, functions)
     .scoreMode(ScoreMode.MULTIPLY)
     .boostMode(CombineFunction.MULTIPLY);

关于java - 如何使用elasticsearch java API编写多个评分函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56063496/

相关文章:

java - 将存储的值与文本输出在同一行

java - 购买列表中的项目 - 线程中出现异常 "main"java.lang.IndexOutOfBoundsException : Index: 0, 大小:0

java - 在访问者界面中不指定所有派生类型的情况下实现访问者模式?

java - 无符号短字节数组

java - 使用 Java 11 启动 Elastic Search 5.0.1 时出现 AccessControlException

ubuntu - 如何在 Ubuntu 中设置 Java 环境路径

elasticsearch - Elasticsearch 中是否应有多个组

exception - Elasticsearch 查询 "empty index"

elasticsearch - 术语、嵌套文档和 must_not 查询在 ElasticSearch 中不兼容?

php - Elastic Search 中如何应用过滤器?