簡體   English   中英

在Elasticsearch聚合中獲取更多字段而不是僅一個字段

[英]Get more fields instead of only one in Elasticsearch aggregation

我是Elasticsearch的新手,我的程序有問題。
為了對結果進行分組,例如在SQL中使用“ group by”語句。 我使用聚合。
但是我意識到這里需要解決一個問題。 我使用以下語句將結果分組:

{
  "aggs": {
    "agg1": {
      "terms": {
        "field": "field1"
      },
      "aggs": {
        "agg2": {
          "terms": {
            "field": "field2"
          },
          "aggs": {
            "agg3": {
              "terms": {
                "field": "field3"
              }
            }
          }          
        }
      }
    }
  }
}

我的問題是:field2和field3的值取決於field1的值,因此,如果可以獲取field1的值,則還可以獲取field2和field3的值。 因此,像上面那樣進行聚合將花費大量時間來完成我的程序(我已經對其進行了測試,並意識到它的花費比僅對field1進行分組要慢6倍)。
所以我的問題是:是否可以僅對field1進行分組(僅使用一個“ ggs”),但還可以獲取field2和field3的值?
如果沒有,那么還有其他可能的方法可以完成我的工作嗎?
提前致謝 :)

如果我理解正確,那么您正在尋找“ 熱門 匹配 集合,則可以使用源過濾功能添加任意數量的字段,請嘗試以下操作

{
  "size": 0,
  "aggs": {
    "agg1": {
      "terms": {
        "field": "field1"
      },
      "aggs": {
        "include_fields": {
          "top_hits": {
            "size": 100,
            "_source": {
              "include": [
                "field2",
                "field3"
              ]
            }
          }
        }
      }
    }
  }
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM