聚合不返回桶

时间:2016-07-14 22:29:41

标签: elasticsearch sense

我试图从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
      }
    }
  }
}

返回给我

{
  "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": []
    }
  }
}

如果我在aggs上执行suite_id,这是一个令牌,我就会获得存储桶。

1 个答案:

答案 0 :(得分:0)

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

.raw适用于分析的字段,其中suite_id.raw会为您提供未分析的值,suite_id会为您提供分析值。

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