3. ElasticSearch分词器和聚合,数据的丰富和去重

1. analyzer

1.1. 什么是analysis?

  • 分析是Elasticsearch在文档发送之前对文档正文执行的过程,以添加到反向索引中(inverted index)
    在这里插入图片描述
  • 每当一个文档被ingest节点纳入,它需要经历如下的步骤,才能最终把文档写入到Elasticsearch的数据库中
    在这里插入图片描述

1.2. 如何定义一个定制的分析器

  • 在这里我们主要运用现有的plugin来完成定制的分析器

    DELETE blogs
     
    PUT blogs
    {
      "settings": {
        "analysis": {
          "char_filter": {
            "xschool_filter": {
              "type": "mapping",
              "mappings": [
                "X-Game => XGame"
              ]
            }
          },
          "analyzer": {
            "my_content_analyzer": {
              "type": "custom",
              "char_filter": [
                "xschool_filter"
              ],
              "tokenizer": "standard",
              "filter": [
                "lowercase",
                "my_stop"
              ]
            }
          },
          "filter": {
            "my_stop": {
              "type": "stop",
              "stopwords": ["so", "to", "the"]
            }
          }
        }
      },
      "mappings": {
        "properties": {
          "content": {
            "type": "text",
            "analyzer": "my_content_analyzer"
          }
        }
      }
    }
    

1.3. 中文分词器

2. Aggregations

2.1. Bucket aggregation

  • 我们将重点介绍直方图(histogram),范围(range),过滤器(filter)和术语(terms)等存储桶聚合

  • Bucket aggregation是一种把具有相同标准的数据分组数据的方法

  • 案例1

    • 样例数据
      在这里插入图片描述

    • 统计同一个category中同一个国家的平均年龄

      GET users/_search
      {
        "size": 0,
        "aggs": {
          "categories": {
            "terms": {
              "field": "category"
            },
            "aggs": {
              "countries": {
                "terms": {
                  "field": "country"
                },
                "aggs": {
                  "average_age": {
                    "avg": {
                      "field": "age"
                    }
                  }
                }
              }
            }
          }
        }
      }
      
    • 结果统计
      在这里插入图片描述

  • 案例2

    • 过滤聚合(角色为defender和角色为forward的平均分)

      GET sports/_search
      {
        "size": 0, 
        "
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值