Как структурировать индексы/типы Elasticsearch?

Как бы вы структурировали индексы/типы для приложения интернет-магазина? Такой интернет-магазин будет состоять из объектов домена, таких как продукт, категория, тег, производитель и т. д. Страница результатов полнотекстового поиска должна отображать смешанный список всех объектов домена.

Я могу думать о двух вариантах:

  1. Один индекс для всего приложения, каждый предметный объект как тип.
  2. У каждого доменного объекта есть свой индекс, тип тот же - "item".

Какой вариант лучше масштабируется?

Большинство «элементов» в базе данных — это продукты. Некоторые продукты еще/больше не доступны. Как повысить доступные в настоящее время продукты?

Полнотекстовый вариант должен отображать категории/производителей в верхней части страницы. Как повысить определенные типы/объекты из определенного индекса?


person Jakub Kulhan    schedule 16.02.2014    source источник
comment
Это довольно большой вопрос, который имеет несколько переменных. Если вы можете предоставить образец набора документов или дополнительную информацию (не стесняйтесь использовать sense.qbox.io/gist/, я мог бы помочь. Самая большая проблема — это данные и структура того, как вы будете искать. безусловно, существуют довольно стандартные соглашения с поиском интернет-магазинов в Elasticsearch, но это довольно большой вопрос.   -  person Michael at qbox.io    schedule 18.02.2014
comment
Это сопоставления, которые я бы использовал (если бы все было в одном индексе). sense.qbox.io/gist/72a7cea515d4c116a93d529a025ed89161c92796 - т.е. фильтрация по категориям/тегам должна быть такой же быстрой, как и полнотекстовый поиск.   -  person Jakub Kulhan    schedule 18.02.2014


Ответы (1)


Для лучшей производительности я предлагаю первый вариант лучше.

1) «Один индекс для всего приложения, каждый объект домена как тип».

2) Предположим, вы создали индекс с именем "eshop". И такие типы, как мобильный телефон, книга и т. д.

3) Потому что вы можете запрашивать в соответствии с вашим пользовательским вводом. Предположим, вы создаете торговый веб-сайт, такой как флипкарт. В поиске пользователь может искать по простому ключевому слову.

4) Теперь вы можете искать в Elasticsearch только с упоминанием имени индекса. Если пользователь ссылается на фильтр суммы, такой как мобильный, диапазон 1000-10000. вам нужно искать внутри мобильного типа, более того, мы можем легко фильтровать в Elasticsearch. это уменьшит вашу память выполнения и ПРОЦЕССОР.

Чтобы увеличить количество доступных продуктов. Добавьте в документ поле с названием Доступно. И при поиске укажите значение повышения для доступного продукта. Пример:

    {
      "query": {
        "term": {
          "available": true
        }
      }
      "boost": 1.5
    }

Дополнительные сведения о повышении см.

http://www.elasticsearch.org/guide/en/elasticsearch/reference/current/query-dsl-boosting-query.html

http://jontai.me/blog/2013/01/advanced-scoring-in-elasticsearch/

person BlackPOP    schedule 24.02.2014