es求平均值_es界面的分组,求平均值的操作

第一个分析需求:计算每个tag下的商品数量

默认情况下,大部分字段都是被索引的(有个倒排索引),以使得他们可以被搜索。

然而,在脚本中排序、聚合和访问字段的值,需要不同的搜索访问模式。

搜索需要回答的问题是“哪些文档包含这些搜索的内容?”,而排序和聚合需要回答的问题是“这个文档中这个字段的值是什么?”

大部分字段都可以使用index-time,磁盘上的doc_values用于这个数据的访问模式;

然而,text字段不支持doc_values。

代替的是,text字段使用一个叫做fielddata的数据结构,该数据结构含义是查询时内存数据结构。该数据结构是按需求首次构建在一个被用于聚合、排序和在脚本的字段上。

它是通过读取从磁盘每段的整个倒排索引来构建的,倒排搜索的内容文档关系,其存储在jvm堆上的内存上。

默认情况下text字段是没有开启的:

聚合时需要对相应的字段做处理如下,否则会报错:

Fielddata is disabled on text fields by default.

Set fielddata=true on [your_field_name] in order to load fielddata

in memory by uninverting the inverted index. Note that this can however use significant memory.

PUT my_index/_mapping/my_type

{

"properties": {

"my_field": { ①

"type": "text",

"fielddata": true

}

}

}

GET /ecommerce/product/_search

{

"aggs": {

"group_by_tags": {

"terms": { "field": "tags" }

}

}

}

将文本field的fielddata属性设置为true

PUT /ecommerce/_mapping/product

{

"properties": {

"tags": {

"type": "text",

"fielddata": true

}

}

}

GET /ecommerce/product/_search

{

"aggs": {

"group_by_aggs": {

"terms": {

"field": "tags"

}

}

}

}

{

"took": 2,

"timed_out": false,

"_shards": {

"total": 5,

"successful": 5,

"failed": 0

},

"hits": {

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值