java - 为什么要使用@Query(“”)来操作Elasticsearch并报错(org.elasticsearch.common.ParsingException: no [query] registered for [query])
问题描述
我的代码
package com.tl666.elasticsearch.pojo;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import org.springframework.data.elasticsearch.annotations.Document;
import java.util.Date;
@Data
@Document(indexName = "blog", type = "blogtext")
@NoArgsConstructor
@AllArgsConstructor
public class Blog {
private Integer id;
private String title;//标题
private String text;//文本内容
private String[] images;
private Person person;
private Date create_time;
}
操作 Elasticsearch
package com.tl666.elasticsearch.repository;
import com.tl666.elasticsearch.pojo.Blog;
import org.springframework.data.elasticsearch.annotations.Query;
import org.springframework.data.elasticsearch.repository.ElasticsearchRepository;
public interface BlogRepository extends ElasticsearchRepository<Blog, Integer> {
@Query("{ \"query\": { \"match\": { \"title\": \"?0\" }}}")
Blog findByName(String title);
}
发生以下异常
org.elasticsearch.common.ParsingException: no [query] registered for [query]
at org.elasticsearch.index.query.AbstractQueryBuilder.parseInnerQueryBuilder(AbstractQueryBuilder.java:337) ~[elasticsearch-6.8.4.jar:6.8.4]
at org.elasticsearch.index.query.WrapperQueryBuilder.doRewrite(WrapperQueryBuilder.java:165) ~[elasticsearch-6.8.4.jar:6.8.4]
at org.elasticsearch.index.query.AbstractQueryBuilder.rewrite(AbstractQueryBuilder.java:284) ~[elasticsearch-6.8.4.jar:6.8.4]
at org.elasticsearch.search.builder.SearchSourceBuilder.rewrite(SearchSourceBuilder.java:949) ~[elasticsearch-6.8.4.jar:6.8.4]
at org.elasticsearch.search.builder.SearchSourceBuilder.rewrite(SearchSourceBuilder.java:80) ~[elasticsearch-6.8.4.jar:6.8.4]
我是按照官方文档操作的,但是出现了上述异常。
谁来帮助我?非常感谢。
解决方案
Val 向您展示了正确的查询,但您不需要自定义查询,您可以通过定义在 title 属性中进行搜索:
public interface BlogRepository extends ElasticsearchRepository<Blog, Integer>
{
Blog findByTitle(String title);
}
推荐阅读
- javascript - 错误 TS2554:预期 2-3 个参数,但得到 1
- visual-studio-2015 - 如何让 Visual Studio 连接到 Windows 应用商店?
- python - Pandas 按 2 列分组,应用函数,选择最大值并返回索引值
- entity-framework - 如何使用 Entity Framework Core 2.1 执行 SqlQuery?
- sql-server - 如何使用 openquery 将几何数据从我的服务器插入链接服务器
- apache-spark - Spark Driver 内存和 Application Master 内存
- mysql - 历史表格数据的数据库设计与查询
- computer-vision - iPhone X 后置摄像头的intrinsicMatrix 是什么?
- sql-server - 如果尚未安装,则仅安装 PowerShell PackageProvider 和 Module
- javascript - 在 Datepicker 中保存 ng-change 本地范围的状态