Как использовать шаблон при создании индекса с Java API - PullRequest
0 голосов
/ 22 апреля 2020

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

Шаблон индекса

PUT _template/quick-search
{
  "index_patterns": ["quick-search*"],
  "settings": {
    "number_of_shards": 1
  },
  "mappings": {
    "_source": {
      "enabled": false
    },
    "properties": {

    "item" : {
        "type" : "long"
      },
      "description" : {
        "type" : "text",
        "fields" : {
          "keyword" : {
            "type" : "keyword",
            "ignore_above" : 256
          }
        }
      },
      "id" : {
        "type" : "text",
        "fields" : {
          "keyword" : {
            "type" : "keyword",
            "ignore_above" : 256
          }
        }
      }
    }
  }
}

1 Ответ

0 голосов
/ 24 апреля 2020

Поскольку вы добавили шаблон индекса, если вы сейчас пытаетесь сохранить документ в индексе, который не существует, и у него есть имя, которое будет соответствовать шаблону, который вы указали в шаблоне "index_patterns": ["quick-search*"] ,asticsearch будет автоматически создайте отображение в соответствии с шаблоном вместо создания отображения на основе вашего ввода.

Более того, если вы попытаетесь создать новый индекс и попытаетесь установить сопоставление (опять же, соответствующее шаблону), шаблон будет работать по умолчанию. Таким образом, для нового индекса вы можете установить тип keyword для item. Это заменит значение по умолчанию long шаблона, но другие параметры будут взяты из шаблона и также будут присутствовать.

Для проверки go на kibana и установки вашего шаблона

PUT _template/quick-search
{
  "index_patterns": [
    "quick-search*"
  ],
  "settings": {
    "number_of_shards": 1
  },
  "mappings": {
    "_source": {
      "enabled": false
    },
    "properties": {
      "item": {
        "type": "long"
      },
      "description": {
        "type": "text",
        "fields": {
          "keyword": {
            "type": "keyword",
            "ignore_above": 256
          }
        }
      },
      "id": {
        "type": "text",
        "fields": {
          "keyword": {
            "type": "keyword",
            "ignore_above": 256
          }
        }
      }
    }
  }
}

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

PUT quick-search-item-keyword
{
  "mappings": {
    "properties": {
      "item": {
        "type": "keyword",
        "index": true
      }
    }
  }
}

GET quick-search-item-keyword/_mapping

А теперь просто сохраните документ в индексе, который не существует

POST quick-search-test-id/_doc/
{
  "id": "test"
}

GET quick-search-test-id/_mapping

Попробуйте сохранить тот же документ в индексе, который не существует и не соответствует шаблону индекса вашего шаблона

POST test/_doc/
{
  "id": "test"
}

GET test/_mapping

Ничто не отличается, если вы используете java клиент. То же самое будет применяться

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...