Elasticsearch 6: отклонение обновления сопоставления, поскольку окончательное сопоставление будет иметь более 1 типа - PullRequest
0 голосов
/ 12 июня 2018

Я пытаюсь преобразовать проект для использования последней версии Elasticsearch 6, и у меня возникла эта проблема.Я не знаю, является ли проблема «продукт» против «продукт».В моих сопоставлениях и атрибутах я указываю «продукты», поэтому я не уверен, почему я получаю эту ошибку, когда пытаюсь проиндексировать продукт.

Ошибка:

Построен неправильный ответ NESTиз неудачного вызова низкого уровня на PUT: / products / products / 1? pretty = true & error_trace = true

"Отклонение обновления сопоставления для [products], так как окончательное сопоставление будет иметь более 1 типа: [Product, products] "

Запрос:

{
  "id": 1,
  "warehouseId": 0,
  "productStatus": 1,
  "sku": "102377",
  "name": "Name",
  "shortDescription": "Description",
  "longDescription": "Description",
  "price": 37.3200
}

Мой код:

    [ElasticsearchType(Name = "products")]
    public class Product : BaseEntity
    {
        [Key]
        public int Id { get; set; }
        public int WarehouseId { get; set; }
        [Display(Name = "Product Status")]
        public Enums.ProductStatus ProductStatus { get; set; }
        [Required, StringLength(10)]
        public string Sku { get; set; }
        [Required, StringLength(200)]
        public string Name { get; set; }
        [StringLength(500), Display(Name = "Short Description")]
        public string ShortDescription { get; set; }
        [DataType(DataType.MultilineText), Display(Name = "Long Description")]
        public string LongDescription { get; set; }
        [Column(TypeName ="Money")]            
        public Nullable<decimal> Price { get; set; }
    }

connection.DefaultMappingFor<Product>(m => m.IndexName("products"));

Ответы [ 4 ]

0 голосов
/ 12 июня 2019

Как говорит Бацу, начиная с версии 5 изasticSearch, концепция обработки индекса как базы данных и типа как таблицы была удалена для реализации оптимизации lucene.

Решение заключается в использовании индекса@ Document.

Направление: https://www.elastic.co/guide/en/elasticsearch/reference/6.7/removal-of-types.html

0 голосов
/ 30 июня 2018

До эластичного поиска v6 индекс может иметь только 1 сопоставление по умолчанию.В предыдущей версии 5.x для индекса было возможно многократное сопоставление.Хотя вы можете изменить эту настройку по умолчанию, обновив настройку индекса "index.mapping.single_type": false.

В вашем случае, я предполагаю, что вы уже создали индекс с отображением Product.Вот почему он отклонил новое отображение во втором запросе с помощью «product» (p в маленьком случае).

0 голосов
/ 07 августа 2018

Это из-за серьезного изменения в ES 6.x: сопоставления были удалены (даже если для обратной совместимости вы все равно можете указать его в пути), тем самым фактически ограничив индекс одним типом.

См. Здесь для получения дополнительной информации.

0 голосов
/ 12 июня 2018

Я удалил индекс и воссоздал его, и теперь все в порядке.Я думаю, что когда я впервые создал индекс, у меня не было правильного имени атрибута, что могло бы объяснить ошибку, которую я получал.

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