如何将此 elasticsearch 函数分数查询转换为 java API
How to covert this elastic search functional score query to java API
如何将下面的 ES 查询转换为 Java API?我正在使用弹性搜索 2.3.3
GET /schema_name/_search
{
"from": 0,
"size": 200,
"query": {
"function_score": {
"query": {
"match_all": {}
},
"boost": "5",
"functions": [{
"filter": {
"term": {
"alert_code": "event_rule_1"
}
},
"weight": 50
},
{
"filter": {
"term": {
"alert_code": "event_rule_2"
}
},
"weight": 30
},
{
"filter": {
"term": {
"alert_code": "event_rule_3"
}
},
"weight": 10
},
{
"filter": {
"term": {
"alert_code": "event_rule_4"
}
},
"weight": 10
},
{
"filter": {
"term": {
"alert_code": "event_rule_5"
}
},
"weight": 50
},
{
"filter": {
"term": {
"alert_code": "event_rule_6"
}
},
"weight": 50
}
],
"max_boost": 50,
"score_mode": "max",
"boost_mode": "replace",
"min_score": 0
}
}
}
我已经尝试使用下面的 link 使用 Java API 编写此 ES 查询
Elasticsearch FunctionScore query using Java API
但是下面的 link 似乎是针对较旧的 ES 版本的,我无法在 elastic search 2.3.3 中找到这些静态函数。
使用 java API
实现如下
FunctionScoreQueryBuilder functionScoreQueryBuilder = QueryBuilders
.functionScoreQuery(queryBuilder)
.setMinScore(0f)
.maxBoost(50f)
.scoreMode("max")
.boostMode(CombineFunction.REPLACE);
for (String alertCode : ruleCodesLowerCase) {
if(alertPriorityMap.get(alertCode.toUpperCase()) != null){
functionScoreQueryBuilder.add(QueryBuilders.termQuery(AlertESEnum.ALERT_CODE_FIELD.value(),
alertCode), ScoreFunctionBuilders.weightFactorFunction((AlertPriority.intValue(alertPriorityMap.get(alertCode.toUpperCase()).getPriority()))));
}
}
如何将下面的 ES 查询转换为 Java API?我正在使用弹性搜索 2.3.3
GET /schema_name/_search
{
"from": 0,
"size": 200,
"query": {
"function_score": {
"query": {
"match_all": {}
},
"boost": "5",
"functions": [{
"filter": {
"term": {
"alert_code": "event_rule_1"
}
},
"weight": 50
},
{
"filter": {
"term": {
"alert_code": "event_rule_2"
}
},
"weight": 30
},
{
"filter": {
"term": {
"alert_code": "event_rule_3"
}
},
"weight": 10
},
{
"filter": {
"term": {
"alert_code": "event_rule_4"
}
},
"weight": 10
},
{
"filter": {
"term": {
"alert_code": "event_rule_5"
}
},
"weight": 50
},
{
"filter": {
"term": {
"alert_code": "event_rule_6"
}
},
"weight": 50
}
],
"max_boost": 50,
"score_mode": "max",
"boost_mode": "replace",
"min_score": 0
}
}
}
我已经尝试使用下面的 link 使用 Java API 编写此 ES 查询 Elasticsearch FunctionScore query using Java API
但是下面的 link 似乎是针对较旧的 ES 版本的,我无法在 elastic search 2.3.3 中找到这些静态函数。
使用 java API
实现如下FunctionScoreQueryBuilder functionScoreQueryBuilder = QueryBuilders
.functionScoreQuery(queryBuilder)
.setMinScore(0f)
.maxBoost(50f)
.scoreMode("max")
.boostMode(CombineFunction.REPLACE);
for (String alertCode : ruleCodesLowerCase) {
if(alertPriorityMap.get(alertCode.toUpperCase()) != null){
functionScoreQueryBuilder.add(QueryBuilders.termQuery(AlertESEnum.ALERT_CODE_FIELD.value(),
alertCode), ScoreFunctionBuilders.weightFactorFunction((AlertPriority.intValue(alertPriorityMap.get(alertCode.toUpperCase()).getPriority()))));
}
}