Исключение синтаксического анализа ElasticSearch Mapper при вставке данных

https://pastebin.com/Xu9CH4B1

Я поделился приведенным выше образцом данных, который я пытаюсь вставить в Elasticsearch с помощью сопоставления:

elastic_search.indices.put_mapping(
                index=index_name_requester,
                doc_type=doc_type_requester,
                body={
                    "properties": {
                        "source_geocode.coordinates": {
                            "type": "geo_point"
                        },
                        "destination_geocode.coordinates": {
                            "type": "geo_point"
                        },
                        "geocodes": {
                            "type": "geo_shape"
                        },
                        "route_box": {
                            "type": "geo_shape"
                        },
                        "start_date_time": {
                            "type": "date",
                            "format": "YYYY-MM-dd'T'HH:mm:ss.SSSSSSZ||yyyy-MM-dd||epoch_millis"
                        }
                    }
                }
            )

Версия эластичного поиска: 6.3.2

Ожидаемое поведение: успешно вставить

Текущая ошибка:

Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "<stdin>", line 2, in insertion
  File "/home/shobhit/.local/lib/python2.7/site-packages/elasticsearch/client/utils.py", line 76, in _wrapped
    return func(*args, params=params, **kwargs)
  File "/home/shobhit/.local/lib/python2.7/site-packages/elasticsearch/client/__init__.py", line 319, in index
    _make_path(index, doc_type, id), params=params, body=body)
  File "/home/shobhit/.local/lib/python2.7/site-packages/elasticsearch/transport.py", line 318, in perform_request
    status, headers_response, data = connection.perform_request(method, url, params, body, headers=headers, ignore=ignore, timeout=timeout)
  File "/home/shobhit/.local/lib/python2.7/site-packages/elasticsearch/connection/http_urllib3.py", line 186, in perform_request
    self._raise_error(response.status, raw_data)
  File "/home/shobhit/.local/lib/python2.7/site-packages/elasticsearch/connection/base.py", line 125, in _raise_error
    raise HTTP_EXCEPTIONS.get(status_code, TransportError)(status_code, error_message, additional_info)
elasticsearch.exceptions.RequestError: RequestError(400, u'mapper_parsing_exception', u'failed to parse')

Но есть аналогичные данные с измененными значениями, которые вставляются, я поделился ссылкой на данные ниже:

https://pastebin.com/4cQzQQ0M

Пожалуйста, помогите понять, в чем проблема с данными. Спасибо!


person Arup    schedule 22.08.2018    source источник
comment
Вы можете поделиться ошибкой, которую вы получаете в журналах сервера ES?   -  person Val    schedule 22.08.2018
comment
Привет Вал! Вот журнал ошибок elasticsearch по ссылке. pastebin.com/iT2de2rc   -  person Arup    schedule 22.08.2018


Ответы (1)


Я нашел источник проблемы. Это была проблема с lat-long, формат lat-long был неправильным в обоих случаях, но 1 был вставлен неправильно, а другой 1 не мог.

Строка, указанная ниже в журналах, упоминала правильную проблему:

Caused by: java.lang.IllegalArgumentException: illegal latitude value [144.62810199999998] for source_geocode.coordinates

Спасибо!!

person Arup    schedule 22.08.2018