【问题标题】:Query Elasticsearch using Spring Data Elasticsearch with fields containing underscore使用包含下划线的字段的 Spring Data Elasticsearch 查询 Elasticsearch
【发布时间】:2021-03-16 10:45:42
【问题描述】:

下面是我的用户模型

@Document(indexName="users",type="records")
public class User{
    private String id;
    private String first_name;
    private String last_name;
}

下面是我的仓库

@Repository
public interface UserSearchRepository extends ElasticsearchRepository<User,String> {

    public List<User> findAllByFirst_name(String first_name);

}

上述方法报错

没有首先找到用户类型的属性

所以我想知道如何使用包含下划线的字段名进行查询

【问题讨论】:

    标签: spring spring-data-elasticsearch


    【解决方案1】:
    @JsonProperty("first_name")
    private String firstName;
    

    在@Query 中,您可以使用first_name as described here

    【讨论】:

      【解决方案2】:

      @JsonProperty 不工作。 我认为唯一的解决方案是使用@Query 注释

      @Repository 
      public interface SampleRepository extends ElasticsearchRepository<SampleData, String> {
      
      @Query("{\"bool\": {\"must\": {\"match\": {\"name_field\": \"?0\"}}}}")
      List<SampleData> findByName(String name);
      

      }

      如果你知道其他方式,请评论我。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2017-12-03
        • 2016-03-28
        • 1970-01-01
        • 1970-01-01
        • 2017-05-18
        • 1970-01-01
        • 2022-01-22
        相关资源
        最近更新 更多