2015-10-14 105 views
1

我正試圖創建一個新的索引(elasticsearch 2.0.0-beta2)以及映射。創建索引時映射的正確格式是什麼?

我傳遞(要麼pyelasticsearchelasticsearch.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

回答

1

注意的是,在2.0 _timestamphas been deprecated升級。

但主要問題是path屬性是no longer available(+ here)。

+0

謝謝,所以如果我理解正確,而不是'path'現在應該有'_source'中的字段'timestamp',它將被自動識別爲映射中啓用的時間戳'_timestamp'? – WoJ

+0

從2.0開始,你不應該再使用'_timestamp'了,而是在你的源文件中有一個日期字段用作時間戳。 – Val

+0

好吧,我沒有意識到,閱讀你鏈接到的文檔,「_timestamp」是完全**棄用(而不僅僅是功能減少)。我會從映射中刪除這個參數,看看它是否能解決問題。 – WoJ

相關問題