我用的是python3.6 elasticsearch (7.9.1)
以及 elasticsearch-dsl (7.3.0)
.
在我的 logstash-2020.09.21
索引我有如下一些文档(按相关字段筛选):
{
"subtype": "webfilter",
"url": "https://play.google.com/",
...
}
我可以做一个 curl
发布请求并获取我需要的信息,如下所示:
curl -X POST "localhost:9200/logstash-2020.09.21/_search?size=0&pretty" -H 'Content-Type: application/json' -d'{
"aggs": {
"urls": {
"filter": { "term": { "subtype": "webfilter" } },
"aggs": {
"count": { "terms": { "field": "url", "size": 100 } }
}
}
}
}'
这会产生一些桶,比如:
"buckets" : [
{
"key" : "https://play.google.com/",
"doc_count" : 30783
}
]
我想知道如何在使用 elasticsearch-dsl
但我很难弄清楚怎么做。
这就是我迄今为止尝试过但没有成功的方法:
from elasticsearch import Elasticsearch
from elasticsearch_dsl import Q, A, Search
a = A("filter", Q("term", subtype="webfilter"))
client = Elasticsearch()
s = Search(using=client, index="logstash-2020.09.21")
s.aggs.bucket("urls", a).bucket("count", "terms", field="url", size=100)
s.execute()
输出:
{
"subtype": "local",
"url": "/",
...
}
暂无答案!
目前还没有任何答案,快来回答吧!