【问题标题】:Need to write a custom analyzer for ElasticsearchRepository findBy query需要为 ElasticsearchRepository findBy 查询编写自定义分析器
【发布时间】:2020-07-06 11:52:37
【问题描述】:

我有一个具有以下文档架构的 ES 集合。

`

public class Address {
@Id
private String id;
private String name;
private String type;
private String city;
}

` 我的存储库如下所示:

public interface NetworkElementsESRepository extends ElasticsearchRepository<Address, String> {
Address findByNameAndCity(String name, String city);}

我需要使用以下查询获取特定城市中名称为“B00/A3K/24”的所有地址。 addressRepo.findByNameAndCity(Name,City) 。我无法获取所需的地址,因为 name 字段具有特殊字符 ('/'),​​并且标准分析器似乎将搜索字符串分解为不同的标记。我需要有关 ElasticsearchRepository 的自定义分析器的帮助。

【问题讨论】:

  • @opster-elasticsearch-ninja

标签: spring-boot elasticsearch spring-data spring-data-elasticsearch


【解决方案1】:

首先,您需要创建分析器in Elasticsearch yourself,或者在使用 Spring Data Elasticsearch 创建索引时提供设置文件。

如果您始终需要此字段的自定义分析器,您可以在 name 属性上使用 analyzersearchAnalyzer@Field 注释中指定分析器。

如果您只需要使用存储库进行搜索的分析器,您应该创建一个使用 @Query 注释的存储库方法,并在那里添加您的自定义查询。

请参阅 Elasticsearch docs 如何构建这样的查询,并查看 Spring Data Elasticsearch docs 以了解 @Query 注释的使用。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-09-16
    • 2017-10-13
    • 2020-10-20
    • 1970-01-01
    相关资源
    最近更新 更多