elasticsearch Jest客户端未从Play Framework的ElasticSearch Suggester 5.1接收数据
我正在尝试从elasticsearch 5.1检索Suggester结果,但目前得到的结果为空。我目前正在使用jest客户端。我的代码如下elasticsearch Jest客户端未从Play Framework的ElasticSearch Suggester 5.1接收数据,elasticsearch,playframework,elasticsearch-jest,elasticsearch,Playframework,Elasticsearch Jest,我正在尝试从elasticsearch 5.1检索Suggester结果,但目前得到的结果为空。我目前正在使用jest客户端。我的代码如下 JestClientFactory factory = new JestClientFactory(); factory.setHttpClientConfig(new HttpClientConfig .Builder("localhost:9200")
JestClientFactory factory = new JestClientFactory();
factory.setHttpClientConfig(new HttpClientConfig
.Builder("localhost:9200")
.multiThreaded(true)
.build());
JestClient client = factory.getObject();
String query="{\n" +
" \"suggest\": {\n" +
" \"text\": \"porm\",\n" +
" \"simple_phrase\": {\n" +
" \"phrase\": {\n" +
" \"field\": \"content\",\n" +
" \"size\": 1,\n" +
" \"gram_size\": 3,\n" +
" \"direct_generator\": [ {\n" +
" \"field\": \"content\",\n" +
" \"suggest_mode\": \"always\"\n" +
" } ],\n" +
" \"highlight\": {\n" +
" \"pre_tag\": \"<em>\",\n" +
" \"post_tag\": \"</em>\"\n" +
" }\n" +
" }\n" +
" }\n" +
" }\n" +
"}";
Suggest suggest1 = new Suggest.Builder(query).addIndex("index").build();
SuggestResult result1 = client.execute(suggest1);
List<SuggestResult.Suggestion> suggestions = result1.getSuggestions("simple_phrase");
ArrayList<String> suggest2=new ArrayList<String>();
for (SuggestResult.Suggestion sugg:
suggestions) {
suggest2.add(sugg.text);
}
return ok(Json.toJson(suggest2));
}
JestClientFactory=new JestClientFactory();
setHttpClientConfig(新的HttpClientConfig
.Builder(“localhost:9200”)
.多线程(真)
.build());
JestClient=factory.getObject();
字符串查询=“{\n”+
“\”建议\“:{\n”+
“\'text\':\'porm\',\n”+
“\”简单短语\“:{\n”+
“\”短语\“:{\n”+
“\”字段\“:\”内容\“,\n”+
“大小”:1\n+
“克大小”:3\n+
“\“直接\u生成器\”:[{\n”+
“\”字段\“:\”内容\“,\n”+
“\”建议\模式\“:\”始终\“\n”+
“}],\n”+
“\”突出显示\“:{\n”+
“\”预标记\“:\“\”,\n”+
“\”后标签\“:\“\”\n”+
“}\n”+
“}\n”+
“}\n”+
“}\n”+
"}";
Suggest suggest1=new Suggest.Builder(查询).addIndex(“索引”).build();
SuggestResult result1=client.execute(suggest1);
List suggestions=result1.getSuggestions(“简单短语”);
ArrayList suggest2=新的ArrayList();
对于(SuggestResult.SuggestSugg:
(建议){
建议2.添加(建议文本);
}
返回ok(Json.toJson(suggest2));
}
我已经解决了这个问题。实际上,json查询有一个问题。
我已将查询修改为:
字符串查询=“{\n”+
“\”简单短语\“:{\n”+
“\'text\':\'porm\',\n”+
“\”短语\“:{\n”+
“\”字段\“:\”内容\“,\n”+
“大小”:1\n+
“克大小”:3\n+
“\“直接\u生成器\”:[{\n”+
“\”字段\“:\”内容\“,\n”+
“\”建议\模式\“:\”始终\“\n”+
“}],\n”+
“\”突出显示\“:{\n”+
“\”预标记\“:\“\”,\n”+
“\”后标签\“:\“\”\n”+
“}\n”+
“}\n”+
“}\n”+
"}";
jest不支持elastic 5.x Yet,请改用Elasticsearch 5 REST客户端。
I have fixed this issue.Actually there was a problem with the json query.
I have modified the query to:
String query="{\n" +
" \"simple_phrase\": {\n" +
" \"text\": \"porm\",\n" +
" \"phrase\": {\n" +
" \"field\": \"content\",\n" +
" \"size\": 1,\n" +
" \"gram_size\": 3,\n" +
" \"direct_generator\": [ {\n" +
" \"field\": \"content\",\n" +
" \"suggest_mode\": \"always\"\n" +
" } ],\n" +
" \"highlight\": {\n" +
" \"pre_tag\": \"<em>\",\n" +
" \"post_tag\": \"</em>\"\n" +
" }\n" +
" }\n" +
" }\n" +
"}";