Elasticsearch 7: типы сопоставления

#elasticsearch

#elasticsearch

Вопрос:

Я сталкиваюсь со следующей фразой, и у меня создается впечатление, что действительный запрос 6.x с типом может выдать ошибку. Я использую cluster ES 7.10

Обратите внимание, что в версии 7.0 _doc является постоянной частью пути и представляет имя конечной точки, а не тип документа.

Но, к моему удивлению, я могу выполнить следующий запрос. Означает ли это, что _doc НЕ является постоянной частью пути? В частности, какие запросы мне нужно изменить, когда я перехожу с 6.x на 7.x

 PUT ecommercesite/product/1
{
   "product_name": "Men High Performance Fleece Jacket",
   "description": "Best Value. All season fleece jacket",
   "unit_price": 79.99,
   "reviews": 250,
   "release_date": "2016-08-16"
 } 
 

И только запрос 6.x, я не могу запустить на 7.10. Я получил ошибку в отношении типа.

 GET ecommercesite/product/_mapping
 

Ответ №1:

PUT Запросы в настоящее время (конец 2020 года) просто выдают предупреждение, но завершатся ошибкой в 8.x.

На данный момент вы можете начать замену product на _doc :

  • PUT ecommercesite/product/1 —> PUT ecommercesite/_doc/1
  • GET ecommercesite/product/_mapping —> GET ecommercesite/_doc/_mapping?include_type_name

но было бы лучше полностью отказаться от типов и придерживаться стандартов:

  • важно: вместо PUT ecommercesite/1 того, чтобы продолжать использовать PUT ecommercesite/_doc/1 или использовать PUT /ecommercesite/_create/1 (документы здесь)
  • GET ecommercesite/_mapping (документы здесь)
  • никаких существенных изменений в GET ecommercesite/_search

Комментарии:

1. понял. Я могу запускать запросы без _doc, однако я понял, что вы должны использовать _doc как можно больше для планирования 8.x.

2. Однако одна точка, которая противоречила — _doc, НЕ кажется постоянной частью пути

3. Да, мне тоже трудно понять, что это значит…

4. permanent просто означает, что _doc это больше не представляет имя типа, это всего лишь одна (все еще необязательная) часть пути URL (например _search , или _mapping )