【发布时间】:2016-08-03 00:59:54
【问题描述】:
我有以下基于注释的弹性搜索配置,我已将索引设置为不被分析,因为我不希望这些字段被标记化:
@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标记过滤器进行索引? -
感谢您的回复,我想这正是我所需要的。
-
Andrei 能否将您的回复作为答案发布,以便我接受?
标签: elasticsearch lucene spring-data