Ответы пользователя по тегу Elasticsearch
  • Как в elasticsearch связать данные?

    AlexZaharow
    @AlexZaharow
    Программист.
    Изначально сам ElasticSearch так делать не умеет и его и не планировали делать таким. Важно понимать, что elasticsearch не база данных и не имеет таких функций по выборке, как реляционные базы. Предполагается, что вы добавите все необходимые данные для возможных вариантов запросов в сам elasticsearch. Т.е. если вы предполагали, что вам потребуется извлекать данные по соответствующему id, то эти данные и следовало добавить СРАЗУ в схему! Именно поэтому elasticsearch идёт как дополнение к базе данных, а не как её заместитель, хотя иногда и может подходить для хранилища, но не для неопределенного круга задач, как реляционные базы.
    Поэтому, если вы все-таки хотите использовать связи, то только самостоятельной выборкой данных из mongo на основе id-шников, полученных из elasticsearch.
    Ответ написан
  • Как правильно обновлять/переиндексировать?

    AlexZaharow
    @AlexZaharow
    Программист.
    Вроде как если меняете analysis или mapping, то требуется только полная переиндексация (Исключение, если вы что-то добавили в mapping, а не изменили или отменили). В отличии от SQL/NoSQL баз ES не переиндексирует данные внутри себя, даже если вы их там храните.

    P.S.
    Извините, но мне кажется, что вы только что начали его изучать. В этом его особенность. Это не база данных, хоть он и может хранить в себе данные. Это существенное отличие от привычного, когда данные отдельно, индексы отдельно.
    Ответ написан
  • Что такое ElasticSearch?

    AlexZaharow
    @AlexZaharow
    Программист.
    Знаете, я с вами соглашусь, что хорошую вводную по Elastic трудно найти. Пока сам не переварил доков и не набил шишек многие элементарные понятия оставались для меня неясными. Поэтому вот моя вводная: Elastic можно использовать как NoSQL БД, только надо быть внимательным, т.к. всё-таки его основная задача поиск, а не удовлетворение функций БД. Например, если вы не настроили хранение исходных данных, а только индексацию, то свои данные вы уже не извлечёте из него. НИКОГДА. Только отдельные выражения, удовлетворяющие условиям поиска. Всё, тупик. Так же нельзя повторно индексировать уже загнанные в него данные. Т.е. перед загрузкой данных надо грамотно настроить индексацию, т.к. перестроить индекс, как это делается в реляционной БД невозможно. Нужно придумать новую схему индексации и перезалить данные в Elastic. Именно поэтому основное использование Elastic - как дополнение к существующей БД из которой данные можно перезалить по одному или полностью в Elastic (можно, конечно сделать схему Elastic->Elastic, но тоже есть нюансы).
    Ещё пару слов про схему. Это ЛОЖЬ, что в Elastic нет схемы данных. Она как раз есть и ооочень жёсткая. Жёсткая до того, что однажды определив, вы не сможете её поменять. Изначально Elastic оказывает медвежью услугу, разрешая вам дополнять схему по-умолчанию, но когда вы разберётесь с этой темой, то можете обнаружить, что Elastic "понастроил" такого у себя внутри, что остаётся только охреневать и переделывать всё явно, отказавшись от его "услуг" по автоматическому добавлению полей в схему.
    Так же в Elastic очень непросто строить сложные запросы на поиск и агрегатные запросы. Совершенно неинтуитивно. Но если освоитесь, то будет вам счастье. )))
    Несмотря за такие "страшные" вещи - Elastic классная система и по производительности агрегатных запросов не уступает платной версии MSSQL в поиске в многопроцессорных системах (проверял на одинаковых аппаратных конфигурациях с 16 ядрами). Так что если вам хочется большую скорость в агрегатных запросах и главное - это бесплатность, то берите и осваивайте Elastic. Мощности и возможности у него огромные. Но... нужно потратить приличные усилия на изучение.
    Ответ написан
  • Почему в Elasticsearch неправильно ищутся некоторые слова?

    AlexZaharow
    @AlexZaharow
    Программист.
    Не совсем ответ, но есть форум, где осуждают проблемы с ES и морфологией в частности на русском (если существенно): https://discuss.elastic.co/c/in-your-native-tongue...

    И стоит посмотреть issue проекта этого плагина (больше закрытые, т.к. по открытым нет ответов):
    https://github.com/imotov/elasticsearch-analysis-m...
    cdc966297e6b49d98b84b76618bcfc7b.png

    Автор плагина Игорь Мотов, я ему задавал вопросы.
    У меня была близкая проблема при использовании wildcard, но оказалось, что это не проблема морфологии.
    Ответ написан
  • Можно ли в Elasticsearch использовать sin или cos?

    AlexZaharow
    @AlexZaharow
    Программист.
    Ваш запрос не сложный, но у вас два варианта:
    1. просто выбрать нужные данные без обработки и обрабатывать уже на клиенте.
    2. Для обработки выбранных данных использовать скрипт (по умолчанию скриптинг не включён вообще, но после включения есть Groovy. javascript надо ставить отдельным плагином). Подробнее: https://www.elastic.co/guide/en/elasticsearch/refe...

    P.S.
    Я редко делаю запросы, поэтому сходу, да и без схемы не могу пока ничего подсказать.
    Ответ написан