2

Я использую spring-data-elasticsearch 1.1.2. Я пытаюсь использовать аннотацию java, чтобы указать, что поле не должно анализироваться.spring-data-elasticsearch - @Field/FieldIndex.not_analyzed игнорируется

Я использую следующие аннотации: @Field (index = FieldIndex.not_analyzed) private String category;

Сформированное отображение не включает в себя «индекс»: «not_analyzed» для этого поля:

"properties" : { 
     "category" : { 
     "type" : "string" 
     }, 
     ... 

Я не имею никакой удачи найти полезную документацию о том, как это сделать, но это выглядит, как он должен работать.

Должно ли это работать? Где я могу найти дополнительную информацию? Как лучше отлаживать?

спасибо.

обновление: проблема также присутствует с последней версией 1.2.0. спросил здесь

+0

Не могли бы вы найти решение этой проблемы? Я столкнулся с такой же ситуацией ... –

+1

Да. Оказывается, у меня были некоторые заблуждения относительно способности данных elasticsearch данных обновлять существующие сопоставления. Это было решено путем удаления и воссоздания индекса. – jbelis

ответ

2

Похожий вопрос: Spring Data Elasticsearch's @Field annotation not working

Вы должны явно поставить отображение в кластер на старте приложения.

elasticsearchTemplate.putMapping(YourDocument.class); 

Ваш узел/кластер не имеет ни малейшего представления о документе вы ставите в, он видит его в первый раз, и никто не сказал ему ничего об этом еще. Spring только сканирует пакеты для компонентов, репозиториев и т. Д., А не для @Documents. Я не уверен, но я думаю, что сопоставление не является частью конфигурации кластера, поэтому сопоставление должно быть указано после запуска кластера.