我有以下的注释基于弹性搜索配置,我已经设置了指数不加以分析,因为我不希望这些区域被标记化的更多信息:弹性搜索不区分大小写
@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;
是否有可能通过使用注释在名称上进行搜索,virtualPath和标记是不区分大小写的? 搜索看起来像这样,通过通配符搜索是必需的:
private QueryBuilder getQueryBuilderForSearch(SearchCriteria criteria) {
String virtualPath = criteria.getPath();
return boolQuery()
.must(wildcardQuery("virtualPath", virtualPath))
.must(wildcardQuery("name", criteria.getName()));
}
不可能。不是关于Spring Data配置,而是关于Elasticsearch本身。您将数据编入索引为not_analyze,它将保持这种状态。另外,如果你想要不区分大小写的数据,为什么不用'关键字'分析器结合'小写'标记过滤器来建立索引? –
感谢您的回复,我认为这正是我需要的。 – Andrei
安德烈能请你回答我的答案,以便我能接受吗? – Andrei