elasticsearch - Elasticsearch 不区分大小写

标签 elasticsearch lucene spring-data

我有以下基于注释的 Elasticsearch 配置,我已将索引设置为不被分析,因为我不希望这些字段被标记化:

    @Document(indexName = "abc", type = "efg")
    public class ResourceElasticSearch {
    @Id
    private String id;
    @Field(type = FieldType.String, index = FieldIndex.not_analyzed)
    private String name;
    @Field(type = FieldType.String, store = true)
    private List<String> tags = new ArrayList<>();
    @Field(type = FieldType.String)
    private String clientId;
    @Field(type = FieldType.String, index = FieldIndex.not_analyzed)
    private String virtualPath;
    @Field(type = FieldType.Date)
    private Date lastModifiedTime;
    @Field(type = FieldType.Date)
    private Date lastQueryTime;
    @Field(type = FieldType.String)
    private String modificationId;
    @Field(type = FieldType.String)
    private String realPath;
    @Field(type = FieldType.String)
    private String extension;
    @Field(type = FieldType.String)
    private ResourceType type;

是否可以通过使用注解使名称、虚拟路径和标签的搜索不区分大小写? 搜索看起来像这样,需要通过通配符搜索:

private QueryBuilder getQueryBuilderForSearch(SearchCriteria criteria) {
    String virtualPath = criteria.getPath();

    return boolQuery()
            .must(wildcardQuery("virtualPath", virtualPath))
            .must(wildcardQuery("name", criteria.getName()));
}

最佳答案

你想做的事情真的不可能,这与 Spring Data 配置无关,而是与 Elasticsearch 本身有关:你将数据索引为 not_analyzed 并且它会保持这种状态。

此外,如果您想要不区分大小写的数据,我建议使用 keyword analyzer 建立索引结合 lowercase token filter .

关于elasticsearch - Elasticsearch 不区分大小写,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36572860/

相关文章:

java - 使用 java 和 lucene 3.6 进行分面搜索的教程

lucene - 需要了解使用RAMDirectory的利弊

java - 尝试检索特定路径下的文件夹/文件的 CMIS 查询不返回任何文档

java - 组织.Hibernate.AnnotationException : No Identifier Specified For Entity I don't have a id in my table

java - Spring Transactional 无法读取更新的值

java - 在不重启服务器的情况下动态重新加载 Spring Mongo 数据库连接

elasticsearch - (Grafana/Kibana/Elasticsearch)表以端点显示特定值的计数

elasticsearch - 在无痛脚本的Array contains方法的幕后,无痛到底做了什么

r - 如何在R中的弹性包中使用index_create()为数据建立索引

elasticsearch - 在elasticsearch中全文搜索精确的match_phrase(带有前导和尾随空格)