以下是我的代码:
SearchSourceBuilder searchSourceBuilder = new SearchSourceBuilder();
searchSourceBuilder.query(QueryBuilders.matchQuery("field", "value to search"));
Search search = new Search.Builder(searchSourceBuilder.toString()).build();
JestResult result = jestc.execute(search);
运行此代码时会出现异常: {"错误" {" ROOT_CAUSE":[{"类型":" parsing_exception""理由":& #34; [match]查询不支持[auto_generate_synonyms_phrase_query]"," line":1," col":213}]," type" :" parsing_exception"," reason":" [match]查询不支持[auto_generate_synonyms_phrase_query]"," line":1,& #34; COL":213}"状态" 400}
需要帮助才能解决此问题.... 尝试match_all查询,它工作。不知道为什么会失败。
我正在使用" org.elasticsearch"和" org.elasticsearch.client" 6.1.1版本和jest版本是5.3.3。不确定是否重要。
提前致谢
答案 0 :(得分:13)
发现问题。我使用的是6.1.1 API版本,但我的弹性节点是5.x,它不支持auto_generate_synonyms_phrase_query参数。
我感动了#org.elasticsearch"和" org.elasticsearch.client"到版本5.6.0,这为我修复了它。在6.1.1客户端中有一些方法,如QueryBuilders.matchQuery(...),它们添加了新参数,从而打破了向后兼容性。我执行查询的弹性搜索节点位于5.x上,因此他们不了解这个新参数。