Elasticsearch - 重要词项聚合

词项聚合

significant_terms 聚合,可以用于全文检索字段,但是要注意,非常消耗内存,因为需要将所有词项加载到内存中,下面是语句。

curl XGET 'http://127.0.0.1:9200/comic/comic/_search?size=0&pretty ' -d '{
  "query": {
    "term": {
        "status": "2"
    }
  },
  "aggregations": {
    "description": {
      "significant_terms": {
        "field": "name"
      }
    }
  }
}'

后台数据集过滤

curl XGET 'http://127.0.0.1:9200/comic/comic/_search?size=0&pretty ' -d '{
  "query": {
    "match": {
        "intern": "Richard"
    }
  },
  "aggregations": {
    "description": {
      "significant_terms": {
        "field": "grade",
        "background_filter":{
            "term":{
                "type":"grade"
            }
        }
      }
    }
  }
}'

简单说下使用限制问题

  • 内存消耗

  • 不应该作为顶级聚合使用,例如:match_all 因为此时前台数据集后台数据集数据完全一样,所以无法感知词项在两者中的频率差异。

  • 计数是近似值

  • 不能使用浮点数字段

猜你喜欢

转载自www.cnblogs.com/pzblog/p/9088411.html