У меня есть следующая аннотация на основе конфигурации эластичным поиска, я установил индекс не должны быть проанализирован, потому что я не хочу, чтобы эти поля должны быть лексем:Упругие поиск регистронезависимы
@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» в сочетании с фильтром токенов «нижнего регистра»? –
Спасибо за ответ, я думаю, что это именно то, что мне нужно. – Andrei
Андрей, пожалуйста, напишите свой ответ как ответ, чтобы я мог его принять? – Andrei