можно реализовать?
Вопрос:
Есть индекс эластика, который генерит приложение. Описан маппинг объекта в индекс и тут появилась потребность создавать поля в индексе динамически (т. е. поля, которых нет в описанном маппинге).
Пример маппинга:
@Document(indexName = "product", createIndex = true)
public class Product {
@Id
@Field(name = "id", type = FieldType.Long)
private Long id;
@Field(name = "name", type = FieldType.Text)
private String name;
}
Нужно при записи документа в индекс добавить в него поля count_mag1 = 5, count_mag2 = 6 ... count_magN = 5
Т. е. поле, которые не описаны в маппинге и их количество динамическое.
Я так понимаю в таком случае мне только уходить от описанных Entity и сохранение сущностей через репозитории spring data?
В идеале бы хотелось конечно добавить в Entity свойство со значением коллекции вида:
private Map<String, Long> counts;
и на этапе формирования запроса в эластик перебирать эту мапу и создавать элементы с таким key value, а само это проперти игнорить. Может есть такая возможность и я просто тупой и не замечаю ее?
а можете рассказать какая задача решается таким извращением?
имеется ввиду динамическое наличие полей в индексе? Насколько я понимаю постановку задачи - удобство/быстрота дальнейшей сортировки по индексу. Я если честно по большей части большой нуб в эластике, поэтому просто делаю задачку согласно постановке. Понимаю основы что и как в целом работает, а в нюансы не вдавался пока :( Это конечно плохо, но как есть к сожалению. Сейчас в доке spring data elastic нашел вариант с EntityCallback, возможно он решит мою проблему
просто сама задача похожа на большие костыли и лучше попробовать разобраться в самой задаче и придти спросить как можно именно задачу решить
Обсуждают сегодня