【发布时间】:2021-06-27 06:20:09
【问题描述】:
我有一个索引来收集各种网站的网络重定向数据。我正在使用嵌套字段来收集数据,如下图所示:
"chain": {
"type": "nested",
"properties": {
"url.position": {
"type": "long"
},
"url.full": {
"type": "text"
},
"url.domain": {
"type": "keyword"
},
"url.path": {
"type": "keyword"
},
"url.query": {
"type": "text"
}
}
}
您可以想象,每个文档都包含一个 url 链数组,该数组的大小等于 Web 重定向的数量。我想根据通配符/正则表达式匹配到url.query 字段来获取聚合。这是一个示例查询:
GET push_url_chain/_search
{
"query": {
"nested": {
"path": "chain",
"query": {
"regexp": {
"chain.url.query": "aff_c.*"
}
}
}
},
"size": 0,
"aggs": {
"dataFields": {
"nested": {
"path": "chain"
},
"aggs": {
"offers": {
"terms": {
"field": "chain.url.domain",
"size": 30
}
}
}
}
}
}
上面的查询确实产生了聚合结果,但不是我想要的方式。
我想查看包含aff_c.* 短语的网址的chain.url.domain 聚合。现在它正在查看链中的所有 url,然后通过 doc_count 聚合存储桶,无论该 url/域是否具有特定的短语。我希望我能够清楚地解释这一点。如何让我的结果显示包含与 url 的查询字段具有 aff_c.* 短语匹配的域的存储桶聚合。
我还想知道如何在通配符或正则表达式查询中使用= 或/。如果我在查询中使用上述符号,它不会产生任何结果。
塔
【问题讨论】:
标签: elasticsearch elasticsearch-aggregation