Я знаю, что мы можем установить схему для полей, которые еще не вошли, когда мы создаем индекс. Однако возможно ли установить схему по умолчанию для неизвестных полей, которые могут входить в данный индекс.

Пример использования: у меня есть таблица DynamoDB, содержимое которой проиндексировано в экземпляре AWS Elastic Search. Таблица DynamoDB содержит идентификаторы, которые не следует индексировать как текст и которые могут получить новый идентификатор, который ранее не был указан в схеме эластичного поиска.

Проблема в том, что если в элементе DynamoDB задано новое поле String, оно будет проиндексировано в Elastic Search по умолчанию следующим образом:

 {
  "mappings": {
    "metadata": {
      "properties": {
        "my_new_field": {
          "type": "text",
          "fields": {
            "keyword": {
              "type": "keyword",
              "ignore_above": 256
            }
          }
        }
      }
    }
  }
}

Хотя я хочу, чтобы новое сопоставление полей по умолчанию было

{
  "mappings": {
    "metadata": {
      "properties": {
        "my_new_field": {
          "type": "keyword"
        }
      }
    }
  }
}
0
Nickolay Kondratyev 27 Июл 2017 в 00:57

1 ответ

Лучший ответ

Вы можете использовать новое определение динамического сопоставления, специфичное для определенных индексов или типов документов, которые вы ожидаете получить. посмотрите [здесь] [1]: https: //www.elastic.co/guide/en/elasticsearch/reference/current/dynamic-templates.html

1
Wim Debreuck 27 Июл 2017 в 11:41