将Rescore JSON查询转换为Java
我在集群中使用elasticsearch LTR插件,很难将下面的JSON重新存储查询转换为Java代码。我似乎在elasticsearch java客户端中找不到合适的对象来执行此操作 我的问题是:将Rescore JSON查询转换为Java,java,json,elasticsearch,Java,Json,elasticsearch,我在集群中使用elasticsearch LTR插件,很难将下面的JSON重新存储查询转换为Java代码。我似乎在elasticsearch java客户端中找不到合适的对象来执行此操作 我的问题是: "rescore": { "query": { "rescore_query": { "sltr": { "params": { "keywords": "soccer cleats"
"rescore": {
"query": {
"rescore_query": {
"sltr": {
"params": {
"keywords": "soccer cleats"
},
"model": "model"
}
},
"query_weight": 1,
"rescore_query_weight": 100
},
"window_size": 500
},
我尝试过使用QueryRescorerBuilder QueryRescorerBuilder=QueryBuilders.rescoreQuery()
像构建其他查询一样,但rescoreQuery()似乎不是java客户端的一部分
我错过了什么
非常感谢。您可以使用
我认为这不是一种正确的方法,因为这是对查询进行硬编码,如果我需要更改查询中的一些值怎么办?@es enthu String customQuery=String.format(“{\'sltr\”:{\'params\”:{\'keywords\”:\%s\”}、\'model\:\%s\“}”、“足球鞋”、“模型”);是的,现在看起来好多了
String customQuery = String.format("{ \"sltr\": { \"params\": { \"keywords\": \"%s\" }, \"model\": \"%s\" } }", "soccer cleats", "model");
WrapperQueryBuilder wrapperQueryBuilder = QueryBuilders.wrapperQuery(customQuery);
QueryRescorerBuilder queryRescorerBuilder = new QueryRescorerBuilder(wrapperQueryBuilder);
queryRescorerBuilder.setQueryWeight(1);
queryRescorerBuilder.setRescoreQueryWeight(100);
queryRescorerBuilder.windowSize(500);
SearchSourceBuilder searchSourceBuilder = new SearchSourceBuilder();
searchSourceBuilder.query(QueryBuilders.matchAllQuery());
searchSourceBuilder.addRescorer(queryRescorerBuilder);
SearchRequest searchRequest = new SearchRequest();
searchRequest.source(searchSourceBuilder);
searchRequest.indices("MY_INDEX");
System.out.println(searchRequest.toString());
{
"query": {
"match_all": {
"boost": 1.0
}
},
"rescore": [
{
"window_size": 500,
"query": {
"rescore_query": {
"wrapper": {
"query": "eyAic2x0ciI6IHsgInBhcmFtcyI6IHsgImtleXdvcmRzIjogInNvY2NlciBjbGVhdHMiIH0sICJtb2RlbCI6ICJtb2RlbCIgfSB9"
}
},
"query_weight": 1.0,
"rescore_query_weight": 100.0,
"score_mode": "total"
}
}
]
}