Упругий поисковый индекс только для поиска полей - PullRequest
1 голос
/ 24 апреля 2019

Я хотел бы создать индекс, в котором индексируются только некоторые поля. Я создал шаблон со свойством enabled, установленным в false. Таким образом, ни одно поле не индексируется по умолчанию. https://www.elastic.co/guide/en/elasticsearch/reference/6.4/enabled.html

Затем я определил поля, которые хочу индексировать с помощью динамических шаблонов. После того, как я вставил документ, ни одно поле не было проиндексировано. Я думаю, это потому, что enabled:false применяется к дочерним элементам корневого элемента, и поскольку ни один из них не должен быть проиндексирован, динамические шаблоны не применяются.

Есть ли способ установить для false значение false для всех полей, не охватываемых динамическими шаблонами?

DELETE so

DELETE _template/test

PUT _template/test
{
  "index_patterns": [
    "*so*"
  ],
  "settings": {
    "number_of_shards": 1
  },
  "mappings": {
    "_doc": {
      "dynamic": true,
      "enabled": false,
      "dynamic_templates": [
        {
          "typeOfMaterial": {
            "path_match": "*.material.typeOfMaterial",
            "mapping": {
              "enabled": true,
              "type": "nested"
            }
          }
        },
        {
          "typeOfMaterialCode": {
            "path_match": "*.material.typeOfMaterial.code",
            "mapping": {
              "enabled": true,
              "type": "keyword"
            }
          }
        }
      ]
    }
  }
}

PUT so/_doc/1
{
  "count": 5,
  "AAA": {
    "material": {
      "typeOfMaterial": [
        {
          "code": "MAT1"
        }
      ]
    }
  }
}

1 Ответ

0 голосов
/ 25 апреля 2019

Согласно документации :

Шаблоны обрабатываются по порядку - выигрывает первый соответствующий шаблон.

Исходя из этого предположения, япопытался бы изменить шаблон следующим образом:

PUT _template/test
{
  "index_patterns": [
    "*so*"
  ],
  "settings": {
    "number_of_shards": 1
  },
  "mappings": {
    "_doc": {
      "dynamic": true,
      "dynamic_templates": [
        {
          "typeOfMaterial": {
            "path_match": "*.material.typeOfMaterial",
            "mapping": {
              "enabled": true,
              "type": "nested"
            }
          }
        },
        {
          "typeOfMaterialCode": {
            "path_match": "*.material.typeOfMaterial.code",
            "mapping": {
              "enabled": true,
              "type": "keyword"
            }
          }
        },
        {
          "allOtherFields": {
            "match": "*",
            "mapping": {
              "enabled": false
            }
          }
        }
      ]
    }
  }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...