为什么使用@Query(“”)操作Elasticsearch并报告错误(org.elasticsearch.common.ParsingException:没有为[query]注册任何[query])

问题描述 投票:0回答:1

我的代码

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]

我根据官方文档进行操作,但发生了上述异常。

谁会帮助我?非常感谢。

java spring elasticsearch spring-data-elasticsearch
1个回答
0
投票

您需要删除query部分。请尝试以下方法:

@Query("{ \"match\": { \"title\": \"?0\" }}")
© www.soinside.com 2019 - 2024. All rights reserved.