Исключение Elasticsearch: превышена глубина отображения в индексе - PullRequest
0 голосов
/ 18 апреля 2020

Я настроил кластер Elasticsearch на Бонсай. Я использую библиотеку elasticsearch-rest-high-level-client для чтения твитов Twitter, хранящихся в Kafka, и помещаю их sh в индекс Elasticsearch.

Я получаю исключение ниже: Exception in thread "main" ElasticsearchStatusException[Elasticsearch exception [type=illegal_argument_exception, reason=Limit of mapping depth [20] in index [twitter] has been exceeded due to object field [THIS CONTAINS ALL OF THE JSON MESSAGE RETRIEVED FROM KAFKA]

Кажется, мой код пытается поместить все сообщение в одно поле. Что может быть не так?

IndexRequest indexRequest = new IndexRequest("twitter").source(jsonMessage, XContentType.JSON); IndexResponse indexResponse = restClient.index(indexRequest, RequestOptions.DEFAULT);

1 Ответ

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

Эта ошибка касается глубины Json, которую вы пытаетесь проиндексировать. Глубина сопоставления по умолчанию, равная 20, означает, что Json, который вы пытаетесь проиндексировать, может иметь поля, максимальная глубина которых составляет 20 уровней. Например,

Например, ниже json, shippingAddress имеет глубину 3 уровня

{
"order": {
    "orderNo": "test_order",
    "orderDate": "2020-01-01",
    "customer": {
        "customerName": "John Doe",
        "customerPhone": "555-555-5555",
        "shippingAddress": {
            "addressLine1": "test",
            "addressLine2": "test",
            "city": "test",
            "state": "test",
            "country": "test"
        }
    }
}

}

Попробуйте по возможности оптимизировать документ. Если нет, настройку можно обновить, если она действительно требуется,

index.mapping.depth.limit - максимальная глубина для поля, которая измеряется как количество внутренних объектов. Например, если все поля определены на уровне объекта root, то глубина равна 1. Если существует одно сопоставление объекта, то глубина равна 2, et c. По умолчанию установлено значение 20.

Проверьте документацию

https://www.elastic.co/guide/en/elasticsearch/reference/7.6/mapping.html#mapping -limit-settings

...