Как исправить проблему с динамическими шаблонами дат? - PullRequest
0 голосов
/ 12 апреля 2019

У меня проблема с образцами динамических дат

Я использую ElasticSearch 6.2.4

Мои шаги:

1) Создать индекс со следующими настройками:

PUT /test1
{
    "settings": {
        "index":{
            "number_of_shards" : 9,
            "number_of_replicas" : 0,
            "max_rescore_window" : 2000000000,
            "max_result_window" : 2000000000
        }
    },
    "mappings": {
        "files": {
            "properties": {
                "Дата добавления в БД": {
                    "type": "date"
                }
            },
            "numeric_detection": true,
            "dynamic_templates": [
                {
                    "integers": {
                        "match_mapping_type": "long",
                        "mapping": {
                            "type": "long"
                        }
                    }
                },
                {
                    "strings": {
                        "match_mapping_type": "string",
                        "mapping": {
                            "type": "keyword"
                        }
                    }
                },
                {
                    "dates": {
                        "match_mapping_type": "date",
                        "mapping": {
                            "format": "yyyy-MM-dd HH:mm:ss||yyyy/MM/dd HH:mm:ss||yyyyMMdd_HH:mm:ss",
                            "type": "date"
                        }
                    }
                }
            ]
        }
    }
}

2) Попробуйте поставить новые записи (у меня только одна)

POST /test1/files/_bulk
{"create":{"_index":"test1","_type":"files","_id":"0"}}
{"Дата добавления в БД":"2019/04/12 11:42:21"}

3) Итак, у меня естьследующий вывод:

{
    "took": 1,
    "errors": true,
    "items": [
        {
            "create": {
                "_index": "test1",
                "_type": "files",
                "_id": "0",
                "status": 400,
                "error": {
                    "type": "mapper_parsing_exception",
                    "reason": "failed to parse [Дата добавления в БД]",
                    "caused_by": {
                        "type": "illegal_argument_exception",
                        "reason": "Invalid format: \"2019/04/12 11:42:21\" is malformed at \"/04/12 11:42:21\""
                    }
                }
            }
        }
    ]
}

Я не могу понять, где моя ошибка ??Я попытался найти некоторую информацию об этой проблеме в Google, к сожалению, у меня нет решения этой проблемы.Может быть, этот вопрос настолько глуп, но я уже сломал свой мозг.Пожалуйста, помогите мне ...

1 Ответ

0 голосов
/ 12 апреля 2019

Я не могу полностью понять, но эта опция работает:

{
    "settings": {
        "index":{
            "number_of_shards" : 9,
            "number_of_replicas" : 0,
            "max_rescore_window" : 2000000000,
            "max_result_window" : 2000000000
        }
    },
    "mappings": {
        "files": {
        "dynamic_date_formats": ["yyyy-MM-dd HH:mm:ss","yyyy/MM/dd HH:mm:ss", "yyyyMMdd_HH:mm:ss"],
            "numeric_detection": true,
            "date_detection": true,

            "dynamic_templates": [
                {
                    "integers": {
                        "match_mapping_type": "long",
                        "mapping": {
                            "type": "long"
                        }
                    }
                },
                {
                    "strings": {
                        "match_mapping_type": "string",
                        "mapping": {
                            "type": "keyword"
                        }
                    }
                }
            ]
        }
    }
}

Ссылка на документацию: https://www.elastic.co/guide/en/elasticsearch/reference/6.2/dynamic-field-mapping.html

Спасибо за внимание:)

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