弹性搜索不区分大小写

And*_*rei 2 lucene elasticsearch spring-data

我有以下基于注释的弹性搜索配置,我将索引设置为不分析,因为我不希望对这些字段进行标记化:

    @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;
Run Code Online (Sandbox Code Playgroud)

是否可以通过使用注释对名称,virtualPath和标签进行区分大小写的搜索?搜索看起来像这样,必须使用通配符搜索:

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

    return boolQuery()
            .must(wildcardQuery("virtualPath", virtualPath))
            .must(wildcardQuery("name", criteria.getName()));
}
Run Code Online (Sandbox Code Playgroud)

And*_*fan 5

并不是真的想做什么,不是关于Spring Data配置,而是关于Elasticsearch本身:您对数据建立了索引,not_analyzed并且它将保持这种状态。

另外,如果您需要不区分大小写的数据,我建议使用结合了令牌过滤器的keyword分析器建立索引。lowercase