1
我正試圖創建一個新的索引(elasticsearch 2.0.0-beta2
)以及映射。創建索引時映射的正確格式是什麼?
我傳遞(要麼pyelasticsearch
或elasticsearch.client
)下面的映射(這是字典的json.dumps
):
{
"mappings": {
"vulnerability": {
"_timestamp": {
"enabled": true,
"path": "HOST_START_iso"
},
"properties": {
"scan_name": {
"type": "string",
"index": "not_analyzed"
},
"severity": {
"type": "string",
"index": "not_analyzed"
},
"HOST_START_iso": {
"format": "epoch_millis||dateOptionalTime",
"type": "date"
}
}
}
}
}
索引的創建失敗與TransportError(400, 'mapper_parsing_exception')
(下面爲elasticsearch.client
回溯,上面的映射在mapping
)
Traceback (most recent call last):
File "C:/dev/Scans/L_build_vulns_index.py", line 38, in <module>
elasticsearch.client.IndicesClient(client=es).create(index=vulns_index, body=mapping)
File "C:\Python34\lib\site-packages\elasticsearch\client\utils.py", line 69, in _wrapped
return func(*args, params=params, **kwargs)
File "C:\Python34\lib\site-packages\elasticsearch\client\indices.py", line 102, in create
params=params, body=body)
File "C:\Python34\lib\site-packages\elasticsearch\transport.py", line 307, in perform_request
status, headers, data = connection.perform_request(method, url, params, body, ignore=ignore, timeout=timeout)
File "C:\Python34\lib\site-packages\elasticsearch\connection\http_urllib3.py", line 89, in perform_request
self._raise_error(response.status, raw_data)
File "C:\Python34\lib\site-packages\elasticsearch\connection\base.py", line 105, in _raise_error
raise HTTP_EXCEPTIONS.get(status_code, TransportError)(status_code, error_message, additional_info)
elasticsearch.exceptions.RequestError: TransportError(400, 'mapper_parsing_exception')
我從另一個索引這種映射,我不明白什麼是錯的的STRUC (我也嘗試刪除最外面的mappings
,結果是索引創建,但沒有任何映射)。
注:此腳本中使用,在過去的工作,我能想到的唯一值得紀念的變革是elasticsearch
謝謝,所以如果我理解正確,而不是'path'現在應該有'_source'中的字段'timestamp',它將被自動識別爲映射中啓用的時間戳'_timestamp'? – WoJ
從2.0開始,你不應該再使用'_timestamp'了,而是在你的源文件中有一個日期字段用作時間戳。 – Val
好吧,我沒有意識到,閱讀你鏈接到的文檔,「_timestamp」是完全**棄用(而不僅僅是功能減少)。我會從映射中刪除這個參數,看看它是否能解決問題。 – WoJ