我有以下基于注释的弹性搜索配置,我将索引设置为不分析,因为我不希望对这些字段进行标记化:
@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_analyzed
并将保持这种状态。
另外,如果您需要不区分大小写的数据,我建议使用结合了令牌过滤器的keyword
分析器进行索引。lowercase
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句