spring-boot-starter-data-elasticsearch 中的建议查询不起作用
Suggest queries in spring-boot-starter-data-elasticsearch not working
我正在尝试使用 spring-boot-starter-data-elasticsearch 执行建议查询。而像这样的术语查询:
@Query(value = "{\"term\" : { \"questionElasticSearch\" : \"?0\" }}")
List<QuestionElasticSearch> getSuggestions2(String questionElasticSearch);
正在运行,建议查询如下:
@Query("{\"suggest\": {\"song-suggest\" : {\"prefix\" : \"?0\",\"completion\" : {\"field\" : \"questionElasticSearch\"}}}}")
List<QuestionElasticSearch> getSuggestions(String questionElasticSearch);
不是。离开 "suggest" 和 "song-suggest" 仍然会出错。得到:
org.elasticsearch.common.ParsingException: 没有 [query] 注册 [suggest]
在 org.elasticsearch.index.query.AbstractQueryBuilder.parseInnerQueryBuilder(AbstractQueryBuilder.java:337) ~[elasticsearch-6.4.3.jar:6.4.3]
在 org.elasticsearch.index.query.WrapperQueryBuilder.doRewrite(WrapperQueryBuilder.java:165) ~[elasticsearch-6.4.3.jar:6.4.3]
在 org.elasticsearch.index.query.AbstractQueryBuilder.rewrite(AbstractQueryBuilder.java:284) ~[elasticsearch-6.4.3.jar:6.4.3]
在 org.elasticsearch.search.builder.SearchSourceBuilder.rewrite(SearchSourceBuilder.java:949) ~[elasticsearch-6.4.3.jar:6.4.3]
在 org.elasticsearch.search.builder.SearchSourceBuilder.rewrite(SearchSourceBuilder.java:80) ~[elasticsearch-6.4.3.jar:6.4.3]
在 org.elasticsearch.index.query.Rewriteable.rewriteAndFetch(Rewriteable.java:97) ~[elasticsearch-6.4.3.jar:6.4.3]
在 org.elasticsearch.index.query.Rewriteable.rewriteAndFetch(Rewriteable.java:87) ~[elasticsearch-6.4.3.jar:6.4.3]
在 org.elasticsearch.action.search.TransportSearchAction.doExecute(TransportSearchAction.java:216) ~[elasticsearch-6.4.3.jar:6.4.3]
在 org.elasticsearch.action.search.TransportSearchAction.doExecute(TransportSearchAction.java:70) ~[elasticsearch-6.4.3.jar:6.4.3]
在 org.elasticsearch.action.support.TransportAction$RequestFilterChain.proceed(TransportAction.java:167) ~[elasticsearch-6.4.3.jar:6.4.3]
在 org.elasticsearch.action.support.TransportAction.execute(TransportAction.java:139) ~[elasticsearch-6.4.3.jar:6.4.3]
在 org.elasticsearch.action.support.HandledTransportAction$TransportHandler.messageReceived(已处理TransportAction.java:89) ~[elasticsearch-6.4.3.jar:6.4.3]
在 org.elasticsearch.action.support.HandledTransportAction$TransportHandler.messageReceived(已处理TransportAction.java:80) ~[elasticsearch-6.4.3.jar:6.4.3]
有什么想法吗?
Spring Data Elasticsearch 通过定义 @Document
注释 class 类型 [=11] 的字段,为完成字段的正确映射和索引提供了一些基本支持=].
但是查询的支持只存在于使用TransportClient
的ElasticsearchTemplate
class中,从Elasticsearch 7.0开始不推荐使用,将在8中删除,因此当支持的 ES 版本更改为 8(可能应该在 5.x 中)时,也将从 Spring Data Elasticsearch 中删除。
此基本实现从未添加到 ElasticsearchRestTemplate
class 中,并且在 ElasticsearchRepository
实现中也丢失了 - 这会导致您看到的错误。
所以你可以使用SpringData Elasticsearch以你想要的格式存储数据,但是不能查询。我创建了 a Jira issue for this.
我正在尝试使用 spring-boot-starter-data-elasticsearch 执行建议查询。而像这样的术语查询:
@Query(value = "{\"term\" : { \"questionElasticSearch\" : \"?0\" }}")
List<QuestionElasticSearch> getSuggestions2(String questionElasticSearch);
正在运行,建议查询如下:
@Query("{\"suggest\": {\"song-suggest\" : {\"prefix\" : \"?0\",\"completion\" : {\"field\" : \"questionElasticSearch\"}}}}")
List<QuestionElasticSearch> getSuggestions(String questionElasticSearch);
不是。离开 "suggest" 和 "song-suggest" 仍然会出错。得到:
org.elasticsearch.common.ParsingException: 没有 [query] 注册 [suggest] 在 org.elasticsearch.index.query.AbstractQueryBuilder.parseInnerQueryBuilder(AbstractQueryBuilder.java:337) ~[elasticsearch-6.4.3.jar:6.4.3] 在 org.elasticsearch.index.query.WrapperQueryBuilder.doRewrite(WrapperQueryBuilder.java:165) ~[elasticsearch-6.4.3.jar:6.4.3] 在 org.elasticsearch.index.query.AbstractQueryBuilder.rewrite(AbstractQueryBuilder.java:284) ~[elasticsearch-6.4.3.jar:6.4.3] 在 org.elasticsearch.search.builder.SearchSourceBuilder.rewrite(SearchSourceBuilder.java:949) ~[elasticsearch-6.4.3.jar:6.4.3] 在 org.elasticsearch.search.builder.SearchSourceBuilder.rewrite(SearchSourceBuilder.java:80) ~[elasticsearch-6.4.3.jar:6.4.3] 在 org.elasticsearch.index.query.Rewriteable.rewriteAndFetch(Rewriteable.java:97) ~[elasticsearch-6.4.3.jar:6.4.3] 在 org.elasticsearch.index.query.Rewriteable.rewriteAndFetch(Rewriteable.java:87) ~[elasticsearch-6.4.3.jar:6.4.3] 在 org.elasticsearch.action.search.TransportSearchAction.doExecute(TransportSearchAction.java:216) ~[elasticsearch-6.4.3.jar:6.4.3] 在 org.elasticsearch.action.search.TransportSearchAction.doExecute(TransportSearchAction.java:70) ~[elasticsearch-6.4.3.jar:6.4.3] 在 org.elasticsearch.action.support.TransportAction$RequestFilterChain.proceed(TransportAction.java:167) ~[elasticsearch-6.4.3.jar:6.4.3] 在 org.elasticsearch.action.support.TransportAction.execute(TransportAction.java:139) ~[elasticsearch-6.4.3.jar:6.4.3] 在 org.elasticsearch.action.support.HandledTransportAction$TransportHandler.messageReceived(已处理TransportAction.java:89) ~[elasticsearch-6.4.3.jar:6.4.3] 在 org.elasticsearch.action.support.HandledTransportAction$TransportHandler.messageReceived(已处理TransportAction.java:80) ~[elasticsearch-6.4.3.jar:6.4.3]
有什么想法吗?
Spring Data Elasticsearch 通过定义 @Document
注释 class 类型 [=11] 的字段,为完成字段的正确映射和索引提供了一些基本支持=].
但是查询的支持只存在于使用TransportClient
的ElasticsearchTemplate
class中,从Elasticsearch 7.0开始不推荐使用,将在8中删除,因此当支持的 ES 版本更改为 8(可能应该在 5.x 中)时,也将从 Spring Data Elasticsearch 中删除。
此基本实现从未添加到 ElasticsearchRestTemplate
class 中,并且在 ElasticsearchRepository
实现中也丢失了 - 这会导致您看到的错误。
所以你可以使用SpringData Elasticsearch以你想要的格式存储数据,但是不能查询。我创建了 a Jira issue for this.