聚合 returns 没有桶

Aggregation returns no buckets

我正在尝试从 ElasticSearch 获取所有唯一的 suite_name 字段,但我的 aggs 没有返回任何存储桶。

我正在使用这个映射

{
  "functional_tests": {
    "mappings": {
      "web_test_result": {
        "properties": {
          "duration": {
            "type": "long"
          },
          "fail_category": {
            "type": "string"
          },
          "fail_info": {
            "properties": {
              "message": {
                "type": "string"
              },
              "screenshot_url": {
                "type": "string"
              },
              "stack": {
                "type": "string"
              }
            }
          },
          "fail_message": {
            "type": "string"
          },
          "fail_stack": {
            "type": "string"
          },
          "file": {
            "type": "string"
          },
          "finish_time": {
            "type": "date",
            "format": "strict_date_optional_time||epoch_millis"
          },
          "instance_id": {
            "type": "long"
          },
          "order_number": {
            "type": "long"
          },
          "query": {
            "properties": {
              "term": {
                "properties": {
                  "instance_id": {
                    "type": "long"
                  },
                  "suite_name": {
                    "type": "string"
                  }
                }
              }
            }
          },
          "screenshot_url": {
            "type": "string"
          },
          "size": {
            "type": "long"
          },
          "status": {
            "type": "string"
          },
          "suite_id": {
            "type": "string"
          },
          "suite_title": {
            "type": "string",
            "fields": {
              "raw": {
                "type": "string",
                "index": "not_analyzed"
              }
            }
          },
          "test_id": {
            "type": "string"
          },
          "test_title": {
            "type": "string",
            "fields": {
              "raw": {
                "type": "string",
                "index": "not_analyzed"
              }
            }
          },
          "timedOut": {
            "type": "boolean"
          }
        }
      }
    }
  }
}

还有这个aggs

GET functional_tests/web_test_result/_search
{
  "size": 0, 
  "aggs" : {
    "suite_titles" : {
      "terms" : { 
        "field" : "suite_title.raw", 
        "size" : 1000
      }
    }
  }
}

哪个returns我这个

{
  "took": 1,
  "timed_out": false,
  "_shards": {
    "total": 5,
    "successful": 5,
    "failed": 0
  },
  "hits": {
    "total": 3383,
    "max_score": 0,
    "hits": []
  },
  "aggregations": {
    "suite_titles": {
      "doc_count_error_upper_bound": 0,
      "sum_other_doc_count": 0,
      "buckets": []
    }
  }
}

如果我在 suite_id 上执行 aggs,这是一个单一的令牌,我会得到桶。

从映射中您可以验证您的 suite_id 是类型 string 并且从 Elasticsearch 的默认映射中它是 not_analyzed.

.raw 可用于已分析的字段,其中 suite_id.raw 将为您提供未分析的值,而 suite_id 将为您提供分析的值。

您没有任何分析值,因此没有 .raw 字段。您只能使用 suite_id