Вложенные документы в Elastic Search - PullRequest
0 голосов
/ 19 февраля 2019

у нас есть программа, которая будет использовать ElasticSearch.Нам нужно сделать запрос, используя соединения, которые не поддерживаются вasticsearch, поэтому у нас остаются вложенные или родительско-дочерние отношения.Я прочитал, что использование parent-child может вызвать существенные проблемы с производительностью , поэтому мы думаем о вложенных документах.

Мы индексируем / запрашиваем продукты, но у нас также есть клиенты и поставщики.Итак, вот что я думаю по поводу сопоставления моего продукта:

{
    "mappings" : {
      "products" : {
        "dynamic": false,
        "properties" : {
          "availability" : {
            "type" : "text"
          },
          "customer": {
              "type": "nested"
          },
          "vendor": {
              "type": "nested"
          },
          "color" : {
                "type" : "text"
            }
          },
          "created_date" : {
            "type" : "text"
          }
        }
      }
    }
}

Здесь клиент и поставщик - это мои сопоставленные поля.

Правильно ли выглядит это отображение?Поскольку для динамического параметра установлено значение false, нужно ли указывать содержимое вложенных документов клиента и поставщика?Если да, то как бы я это сделал?

1 Ответ

0 голосов
/ 20 февраля 2019

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

Если вы используете dynamic: false, тогда неопределенные поля будутне будут добавлены к отображению.Вы можете либо установить его в true, и эти поля должны быть добавлены при индексировании, либо вы можете сами определить свойства вложенных документов:

{
"mappings" : {
  "products" : {
    "dynamic": false,
    "properties" : {
      ...
      "customer": {
          "type": "nested",
          "properties": {
              "prop a": {...},
              "prop b": {...}
          }
      },
      "vendor": {
          "type": "nested",
          "properties": {
              "prop a": {...},
              "prop b": {...}
          }
      },
      ...
    }
  }
}
}
...