Наличие значений в качестве ключей VS, имеющих их как массив вложенных объектов в ElasticSearch - PullRequest
0 голосов
/ 18 октября 2019

В настоящее время у меня есть индекс эластичного поиска с полем, которое имеет подполя, например, A, B, C, как показано ниже:

"myfield":{
  "A":{
    "name":"A",
    "prop1":{
      "sub-prop1":1,
      "sub-prop2":2
   },
    "prop2":{}
 },
  "B":{
    "name":"B",
    "prop1":{
      "sub-prop1":3,
      "sub-prop2":8,
      "sub-prop3":4,
      "sub-prop4":7,
   },
    "prop2":{}
 },
  "C":{}
}

Как видно, структура полей A и B одинакова,но подпроцессы под prop1 могут быть динамическими, то есть, основываясь на добавленных документах, отображение может измениться, но это не проблема, поскольку A и B существуют как отдельные ключи. Однако из-за этого я сталкиваюсь с другой проблемой, заключающейся в том, чтопродолжая добавлять новые документы, благодаря динамическому отображению, возможно, что такие подпроппели или подполя, как A, B, C, D ... и т. д. продолжают добавляться в отображение, что, в свою очередь, может привести к отображениюпревышать index.mapping.total_fields.limit , чтобы избежать того, что я планирую сделать поля "myfield" и "prop1" массивом объектов вместо этого в отображении, чтобы поля A, B, C ... хранятся как элементы массива, а не добавляются к отображению как новые поля.

Вопрос в том, является ли это возможным решением и как искать, скажем, "myfield.A.prop1.sub-prop1 "> = 3

новое отображение выглядит примерно так:

"myfield":[
  {
    "name":"A",
    "prop1":{
      "sub-prop1":1,
      "sub-prop2":2
   },
    "prop2":{}
 },
 {
    "name":"B",
    "prop1":{
      "sub-prop1":3,
      "sub-prop2":8,
      "sub-prop3":4,
      "sub-prop4":7,
   },
    "prop2":{}
 },
 {}
]
...