Как спроектировать отображение для Elastic Search, в котором тип содержит другой тип - PullRequest
0 голосов
/ 22 мая 2018

Я хочу создать отображение для Elastic Search, которое содержит тип A и тип B., а тип B имеет поле типа A. Вот пример из официального документа

{
    "mappings":
    {

        "A":{
            "properties":
            {
                "A1":{"type":"keyword"},
                "A2":{"type":"keyword"},
                "A2":{"type":"keyword"}
            }
        },
        "B":{
            "properties":
            {
                "B1":{"type":"keyword"},
                "B2":{"type":"keyword"},
                "B2":{"type":"keyword"},
                "Field_A":{               //"Field_A":{"type":"A"} not legal
                    "properties":
                    {
                        "A1":{"type":"keyword"},
                        "A2":{"type":"keyword"},
                        "A2":{"type":"keyword"}
                    }
            }
        }
    }
}

IsЕсть ли более элегантный способ сделать это?Как и классы c ++, сначала объявите A и B, а затем определите член типа A для B.

class A;

class B
{

private:
    A m_AtypeMember;

}

1 Ответ

0 голосов
/ 22 мая 2018

Лучший способ сделать это - определить DynamicTemplate, где вы можете указать совпадение (* .A1) или более сложное совпадение с регулярным выражением, таким образом это отображение будет применяться в обоих типах.

{
  "mappings": {
    "doc": {
      "dynamic_templates": [
        {
          "mappingName": {
            "match_mapping_type": "string",
            "match_pattern": "regex",
            "match":"your regular expresion",
            "mapping": {
              "type": "keyword"
            }
          }
        }
      ]
    }
  }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...