修复 ElasticSearch 'Unknown key for a START_ARRAY in [...].'
当你收到类似这样的错误消息
elasticsearch_unknown_key.txt
elasticsearch.exceptions.RequestError: RequestError(400, 'parsing_exception', 'Unknown key for a START_ARRAY in [size].')在 ElasticSearch 中,查找 [方括号] 中的值。在我们的示例中这是 [size]。
你的查询包含该键的数组,但不允许使用数组。
例如,此查询格式不正确:
es_size_array_incorrect.json
{
"size": [10, 11]
}因为 size 接受数字,而不是数组。
在 Python 中,如果你以编程方式构建数组,你的行末可能有多余的逗号。
例如,如果你有类似这样的行
es_size_tuple_bug.py
query["size"] = 250,这只是以下代码的语法糖
es_size_tuple_explicit.py
query["size"] = (250,)即它将 size 设置为包含一个元素的元组。在 JSON 中这将导致
es_size_array_json.json
{
"size": [250]
}为了修复此问题,从行末删除逗号
es_size_fix.py
query["size"] = 250这将产生正确的查询 JSON
es_size_correct.json
{
"size": 250
}Check out similar posts by category:
Databases, ElasticSearch
If this post helped you, please consider buying me a coffee or donating via PayPal to support research & publishing of new posts on TechOverflow