Elasticsearch. Используется spring elasticseach. Я добавил fielddata=true в поле @Field.
Чтобы автоматом применить этот маппинг я нашел только одно решение - в main методе использовать elasticsearchRestTemplate.putMapping(DocumentClass.class);
Но хорошее ли это решение?
Как можно еще обновлять маппинг полей?
Так как это deprecated method, есть indexOperations.putMapping, но он принимает не @Document class, а именно объект типа Document. Как его можно получить?
https://docs.spring.io/spring-data/elasticsearch/docs/current/api/org/springframework/data/elasticsearch/core/convert/ElasticsearchConverter.html#mapObject-java.lang.Object- Получить можно из indexOperations
Как я понимаю нужно создать бин для него, но тут что-то страшное @Bean public ElasticsearchConverter elasticsearchConverter() { return new MappingElasticsearchConverter(); } Конструктор принимает Results might be incomplete during indexing @NotNull MappingContext<? extends ElasticsearchPersistentEntity<?>, ElasticsearchPersistentProperty> mappingContext
Вообще по идее можно: elasticsearchRestTemplate.getIndexOps(Entity.class).putMapping(); Но хз как отработает по факту
точно также принимает Document)
https://docs.spring.io/spring-data/elasticsearch/docs/current/api/org/springframework/data/elasticsearch/core/ElasticsearchRestTemplate.html#indexOps-java.lang.Class- https://docs.spring.io/spring-data/elasticsearch/docs/current/api/org/springframework/data/elasticsearch/core/IndexOperations.html#putMapping--
Уверен? Javadoc говорит, что есть без Documenr
В эластике по-хорошему никто не обновляет маппинг, по-хорошему регулярно перестраивают индекс
но ведь если перестраивать = удалить все данные?
Обсуждают сегодня