我有兩個組態檔,“A”和“B”都有彈性事件
這是 ex 的彈性資料:
{hits: [
{tag:"A"},
{tag:"B"},
{tag:B}
]}
我想計算一個請求中有多少事件標簽“a”以及有多少“B”
我試過這個,但它總共算作 3,我想要 A:1 和 B:2
GET forensics/_count
{
"query": {
"terms": {
"waas_tag": ["A","B"]
}
}
}
uj5u.com熱心網友回復:
您可以使用術語向量 API來獲取有關特定欄位的術語的資訊。
添加帶有索引資料和回應的作業示例
索引資料
{
"waas_tag": [
{
"tag": "A"
},
{
"tag": "B"
},
{
"tag": "B"
}
]
}
術語向量 API:
GET _termvectors/1?fields=waas_tag.tag
回復:
"term_vectors": {
"waas_tag.tag": {
"field_statistics": {
"sum_doc_freq": 2,
"doc_count": 1,
"sum_ttf": 3
},
"terms": {
"a": {
"term_freq": 1, // note this
"tokens": [
{
"position": 0,
"start_offset": 0,
"end_offset": 1
}
]
},
"b": {
"term_freq": 2, // note this
"tokens": [
{
"position": 101,
"start_offset": 2,
"end_offset": 3
},
{
"position": 202,
"start_offset": 4,
"end_offset": 5
}
]
}
}
}
}
uj5u.com熱心網友回復:
最后我找到了一個不使用 count 而是 msearch 的解決方案
GET forensics/_msearch
{} // this means {index:"forensics"}
{"query":{"term":{"waas_tag":"A"}}}
{} // this means {index:"forensics"}
{"query":
{
"bool":{
"must":[{"term":{"waas_tag":"B"}
},
{
"range":{"@timestamp":{"gte":"now-20d","lt":"now/s"}}}]}
}
}
uj5u.com熱心網友回復:
您可以使用過濾器聚合來獲取單個查詢中每個標簽的計數,而無需使用 _msearch 端點。此查詢應該有效:
{
"size": 0,
"aggs": {
"counts": {
"filters": {
"filters": {
"CountA": {
"term": {
"waas_tag": "A"
}
},
"CountB": {
"term": {
"waas_tag": "B"
}
}
}
}
}
}
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/425463.html
標籤:弹性搜索
上一篇:這兩個ES查詢有什么區別?
