簡體   English   中英

聚合彈性搜索5

[英]Aggregations elasticsearch 5

在我的彈性搜索中,索引具有以下類型的條目。

{
  "_index": "employees",
  "_type": "employee",
  "_id": "10000",
  "_score": 1.3640093,
  "_source": {
    "itms": {
      "depc": [
        "IT",
        "MGT",
        "FIN"
      ],
      "dep": [
        {
          "depn": "Information Technology",
          "depc": "IT"
        },
        {
          "depn": "Management",
          "depc": "MGT"
        },
        {
          "depn": "Finance",
          "depc": "FIN"
        },
        {
          "depn": "Finance",
          "depc": "FIN"
        }
      ]
    }
  }
}

現在,我試圖獲取唯一的部門列表,包括部門代碼(depc)和部門名稱(depn)。

我正在嘗試跟蹤,但是沒有得到預期的結果。

{
  "size": 0,
  "query": {},
  "aggs": {
    "departments": {
      "terms": {
        "field": "itms.dep.depc",
        "size": 10000,
        "order": {
          "_term": "asc"
        }
      },
      "aggs": {
        "department": {
          "terms": {
            "field": "itms.dep.depn",
            "size": 10
          }
        }
      }
    }
  }
}

任何建議表示贊賞。

謝謝

從您的agg查詢來看, itms.dep的映射類型似乎是對象,而不是嵌套的

Lucene沒有內部對象的概念,因此Elasticsearch將對象層次結構簡化為字段名稱和值的簡單列表。

因此,您的文檔已在內部轉換為:

{
  "depc" :        ["IT","MGT","FIN"],
  "dep.depc" : [ "IT","MGT","FIN"],
  "dep.depn" :  [ "Information Technology", "Management", "Finance" ]
}

即您已經失去了depcdepn之間的關聯

要解決此問題:

  1. 您需要將對象類型更改為嵌套
  2. 使用嵌套聚合

現有的agg查詢的結構對我來說似乎很好,但是您必須在映射更新后將其轉換為嵌套聚合

暫無
暫無

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

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