我继续在Python中遇到以下错误
发生异常:TypeError不可散列的类型:'dict'
第92行
"should": [],
"must_not": []
这是查询字符串
res = es.search(
scroll = '2m',
index = "logstash-*",
body = {
{
"aggs": {
"2": {
"terms": {
"field": "src_ip.keyword",
"size": 50,
"order": {
"1": "desc"
}
},
"aggs": {
"1": {
"cardinality": {
"field": "src_ip.keyword"
}
}
}
}
},
"size": 0,
"_source": {
"excludes": []
},
"stored_fields": [
"*"
],
"script_fields": {},
"docvalue_fields": [
{
"field": "@timestamp",
"format": "date_time"
},
{
"field": "flow.start",
"format": "date_time"
},
{
"field": "timestamp",
"format": "date_time"
},
{
"field": "tls.notafter",
"format": "date_time"
},
{
"field": "tls.notbefore",
"format": "date_time"
}
],
"query": {
"bool": {
"must": [
{
"range": {
"@timestamp": {
"gte": 1555777931992,
"lte": 1558369931992,
"format": "epoch_millis"
}
}
}
],
"filter": [
{
"match_all": {}
}
],
"should": [],
"must_not": []
}
}
}
})
答案 0 :(得分:0)
body
的值是一个集合(没有键值的{ }
是一个集合文字,例如{1,2}
是一个集合)。在这个集合中,您有一个字典。
集合中的项目必须是可哈希的,而字典不是。
正如@Carcigenicate的评论所说,对于{{ }}
的值,用{ }
而不是body
似乎是错字。
Elasticsearch documentation显示正文应该是字典。
有关python docs