Пользовательское эластичное картирование Jhipster - PullRequest
0 голосов
/ 13 февраля 2019

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

Например, у меня есть две сущности, сгенерированные с помощью следующего jdl:

entity Event {
    title String required minlength(1) maxlength(30)
    startDate ZonedDateTime required,
    endDate ZonedDateTime required

}

entity CustomData{
    name String required minlength(1) maxlength(30),
    value String required,
    filterable Boolean required     
}

 relationship OneToMany{
    Event{aEvent} to CustomData{Event(id)}
 }

Это отношение не сохраняется в поисковом хранилище по умолчанию иразрешает только События с дочерними объектами CustomData, прикрепленными в виде массива объектов.

Вот пример того, как это выглядит:

{
        "id": 28152,
        "title": "testWed123",
        "startDate": "2019-02-13T10:53:00.798Z",
        "endDate": "2019-02-13T10:53:00.798Z",
        "customData": [
            {
                "id": 28202,
                "name": "customData1",
                "value": "customDataValue1",
                "filterable": false,
                "event": null
            },
            {
                "id": 28203,
                "name": "customData1",
                "value": "customDataValue2",
                "filterable": true,
                "event": null
            }
        ]
    }

А вот как я сохраняю эти событияв хранилище эластичного поиска:

event.addCustomData(customData1);
eventSearchRepository.save(event);

1 Ответ

0 голосов
/ 10 мая 2019

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

    @Field(type = FieldType.Nested, includeInParent = true)
    @OneToMany(mappedBy = "event", fetch = FetchType.EAGER, targetEntity = CustomData.class)
    @Cache(usage = CacheConcurrencyStrategy.NONSTRICT_READ_WRITE)
    private Set<CustomData> customData = new HashSet<>();

используйте другое имя индекса, если вы поместили какие-либо документы в индекс, поскольку он не будет генерировать новое сопоставление с вышеуказанной информацией.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...