[BUG] elasticsearch7.X bulk index 報錯,RequestError(400, 'illegal_argument_exception', 'Action/metadata line [1] contains an unknown parameter [_version]')


相關組件

  • python 3.6.8
  • elasticsearch 7.10.2
  • elasticsearch-py 7.1.0

解決方案

把 python 包從 elasticsearch-py 7.1.0 改成 elasticsearch-py 7.6.0 即可。
用其他版本可能也行,但我沒試過。

問題描述

調用 es.bulk 寫 es,報錯:

{
    "index": {
        "error": "RequestError(400, 'illegal_argument_exception', 'Action/metadata line [1] contains an unknown parameter [_version]')",
        "status": 400,
        "exception": "RequestError(400, 'illegal_argument_exception', {'error': {'root_cause': [{'type': 'illegal_argument_exception', 'reason': 'Action/metadata line [1] contains an unknown parameter [_version]'}], 'type': 'illegal_argument_exception', 'reason': 'Action/metadata line [1] contains an unknown parameter [_version]'}, 'status': 400})",
        "data": {
            "content": "xxx"
        },
        "_index": "test",
        "_version": "1618329599999",
        "_version_type": "external",
        "_id": "c01986c137310a044c355a8b9323431f"
    }
}

之所以想到可能是版本問題,是因為:
1、相同的代碼,灌 es6 是沒問題的;
2、查資料 _version not supported in elasticsearch 6.1 onwards #295 發現,版本確實可能會導致這個問題。但是粗看下來,跟我遇到的問題關系不大;
3、一個干擾:相同的數據,直接用 python 腳本 bulk 是沒問題的,但是用自己寫的 spark 腳本 bulk 就會報錯。后來才想起來,spark 腳本使用的包版本和 python 腳本使用的包版本並不相同。而 python 腳本用的是 7.6.0。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM