не удалось проанализировать поле [поле даты] типа [дата] - PullRequest
0 голосов
/ 17 января 2019

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

Ошибка: 400 {"error": {"root_cause": [{"type": "mapper_parsing_exception", "reason": "не удалось проанализировать поле [publish_up] типа [date]"}], "type" : "mapper_parsing_exception", "reason": "не удалось проанализировать поле [publish_up] типа [date]", "reason_by": {"type": "invalid_argument_exception", "reason": "Неверный формат: \" 2015-02 -11 00: 00: 00 \ "неправильно сформировано в \" 00:00:00 \ ""}}, "status": 400}

Вот как я настраиваю индекс:

$params = [
    'index' => 'attachments',
    'body' => [
        'settings' => [ 
            'number_of_shards' => 1,
            'analysis' => [ 
                'analyzer' => [
                    'custom_analizer_texto_sub' => [
                        'type' => 'custom',
                        'tokenizer' => 'keyword',
                        'filter' => ['lowercase']
                    ]
                ]
            ]
        ],
        'mappings' => [
            'article' => [
                '_source' => [
                    'enabled' => true
                ],
                'properties' => [
                    'iddoc' => [ 'type' => 'integer'],
                    'publish_up' => [ 'type' => 'date'],//, 'format' => 'YYYY-mm-dd HH:mm:ss'], //Y/m/d H:i:s
                    'textofull' => [ 'type' => 'keyword']
                ]
            ]
        ]
    ]
];
$response = $client->indices()->create($params);

И индексный код (здесь я получаю ошибку):

    $params = [
        'index' => 'attachments',
        'type' => 'documentos',
        'id' => $datos->id,
        'body' => [
            'iddoc' => $datos->id,
            'publish_up' => $datos->publish_up,
            'textofull' => $datos->fulltext
        ]
    ];
    $response = $client->index($params);

ПРИМЕЧАНИЕ: $datos->publish_up имеет этот формат даты 2015-02-11 00:00:00. Я проверил Документация , но не могу решить свою проблему.

1 Ответ

0 голосов
/ 17 января 2019

Поскольку ваш формат даты не является стандартным ISO8601 (отсутствует T между датой и временем), вам необходимо добавить формат в ваше отображение. Вы сделали, но модель была неправильной, так как вы использовали YYYY для лет вместо yyyy и mm для месяцев вместо MM. Попробуйте вот так:

                'publish_up' => [ 'type' => 'date', 'format' => 'yyyy-MM-dd HH:mm:ss'],
                                                                   ^  ^
                                                                   |  |
                                                               change these
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...