Elasticsearch学习笔记(2)

搜索之外          

     统计
elasticsearch是一个全文搜索引擎,旨在根据查询提供搜索结果。然而,有时候我们需要得到更多的信息。例如我们希望在得到结果的基础上生成一些统计信息,如标价在100-200美元之间的文档数量,或者在结果文档中最常用到的标签是什么,为了做到这些,Elasticsearch提供了一个统计模块,来负责提供这些数据。
     针对的elasticsearch版本为0.20版本,最新版本部分字段会有不同
1.query统计: 是一种最简单的统计类型,使得我们能够在统计的结果中得到匹配指定查询的文档的个数
{               //一个简单的term查询,返回匹配该查询的文档个数的统计
  "query": {
    "match_all": {}
  },
  "facets": {
    "my_query_facet": {
      "query": {
        "term": {
          "tags" : "personal"
        }
      }
    }
  }
}
2.filter统计:    一种简单的统计类型,使得我们能够得到与指定过滤相匹配的文档的个数
{                    //对一个简单的term过滤,返回匹配该过滤的文档的个数的统计
  "query": {
    "match_all": {}
  },
  "facets": {
    "my_filter_facet": {
      "filter": {
        "term": {
          "tags" : "personal"
        }
      }
    }
  }
3.terms统计:  统计能够指定一个字段,Elasticsearch将返回在指定字段中使用最多的词项
{                         //针对tags字段进行terms统计
  "query": {
    "match_all": {}
  },
  "facets": {
    "tags_facte_result" : {
      "terms": {
        "field": "tags"
      }
    }
  }
}
4.range统计:  统计能够获得一个属于指定范围的文档个数
   {                    //我们可以通过下面的查询来获得total字段中小于90、90~180之间、以及大于180三个范围的文档个数
  "query": {
    "match_all": {}
  },
  "facets": {
    "ranges_facet_result" : {
      "range": {
        "field": "total",
        "ranges": [
          {
            "to": 90
          },
          {
            "from": 90,
            "to": 180
          },
          {
            "from": 180
          }
        ]
      }
    }
  }
5.histogram统计 :  能够对字段取值按间隔统计建立直方图(针对数值型或日期型字段)
 {                    //计算在total字段每间隔1000有多少文档
  "query": {
    "match_all": {}
  },
  "facets": {
    "total_histogram" : {
      "histogram": {
        "field": "total",
        "interval": 1000
      }
    }
  }
  data_histogram统计:应用于日期字段,允许我们使用year、month、week、day、hour或minute等常量作为interval属性的取值
{
  "query": {
    "match_all": {}
  },
  "facets": {
    "date_histogram_test" : {
      "date_histogram": {
        "field": "date",
        "interval": "day"
      }
    }
  }
}
6.statistical统计:  我们可以对以这个数值型字段计算统计信息,我们能够得到个数、总和、平方和、均值、最小值、最大值、方差及标准差
{                    //计算total字段的统计信息
  "query": {
    "match_all": {}
  },
  "facets": {
    "statistical_test" : {
      "statistical": {
        "field": "total"
      }
    }
  }
}
7.terms_stats统计:综合了statistical统计和terms统计,它提供了在一个字段上基于另一个字段上获得的取值进行统计的能力
{                    //对total字段进行统计,同时希望根据tags字段对统计值进行划分
  "query": {
    "match_all": {}
  },
  "facets": {
    "total_tags_terms_stats" :{
      "terms_stats": {
        "key_field": "tags",
        "value_field": "total"
      }
    }
  }
}
8.geo_distance统计: 使用该类型可以获得给定位置某个距离范围内的文档个数   

你可能感兴趣的:(elasticsearch,学习笔记,统计)