Как в elasticsearch связать данные?

Использую elastocsearch.js для полнотекстового поиска и MongoDB как базу данных.
Подскажите как сделать аналог populate для массива interests (т.е. достать данные из таблицы interests которые соответствуют id в массиве).

[
    {
        "_index": "index",
        "_type": "user",
        "_id": "59ba5979ddb2072010a557c8",
        "_score": 1.2068838,
        "_source": {
            "email": "mail@gmail.com",
            "interests": [
                "599d5cd5e9d0f717e01512a7"
            ],
            ...    
    }
]
  • Вопрос задан
  • 365 просмотров
Пригласить эксперта
Ответы на вопрос 1
AlexXYZ
@AlexXYZ
O Keep Clear O
Изначально сам ElasticSearch так делать не умеет и его и не планировали делать таким. Важно понимать, что elasticsearch не база данных и не имеет таких функций по выборке, как реляционные базы. Предполагается, что вы добавите все необходимые данные для возможных вариантов запросов в сам elasticsearch. Т.е. если вы предполагали, что вам потребуется извлекать данные по соответствующему id, то эти данные и следовало добавить СРАЗУ в схему! Именно поэтому elasticsearch идёт как дополнение к базе данных, а не как её заместитель, хотя иногда и может подходить для хранилища, но не для неопределенного круга задач, как реляционные базы.
Поэтому, если вы все-таки хотите использовать связи, то только самостоятельной выборкой данных из mongo на основе id-шников, полученных из elasticsearch.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы