基于elasticsearch7.6.1 和 kibana7.6.1

一、基础知识

一个完整的分析器Analyzer包括如下三个组件:

  1. Character Filters: 对文本信息就行预处理,比如对原始文本删减或替换字符
  2. Token Filters: 分词后过滤,对分词后的词语列表进行处理(过滤,删除等)
  3. Tokenizer:分词器,即将原始文本按照一定规则切分为词语(token)

1. Character Filters

es内置的Character Filters包括:html_strip: 去除html标签, mapping:字符串替换|映射, pattern_replace: 正则匹配替换。

案例演示

# char_filter: "html_strip"去除 html 标签

POST _analyze
{
  "char_filter": [
    "html_strip"
  ],
  "tokenizer": "standard",
  "text": "<html><body><div><span>You Know, for Search<span></div><body><html>"
}

# char_filter: "mapping"字符串替换|映射

POST _analyze
{
  "char_filter": [
    {
      "type": "mapping",
      "mappings": [
        "&=>and",
        "&&=>and"
      ]
    }
  ],
  "tokenizer": "standard",
  "text": "You & me, go && java"
}

# char_filter: "pattern_replace"正则匹配替换

POST _analyze
{
  "char_filter": [
    {
      "type": "pattern_replace",
      "pattern": "(v[0-9.]+)",
      "replacement": "latest version"
    }
  ], 
  "tokenizer": "standard",
  "text": "kibana v7.6.1 and elasticsearch v7.6.1"
}

# char_filter: 多个组合使用

POST _analyze
{
  "char_filter": [
    "html_strip",
    {
      "type": "mapping",
      "mappings": [
        "&=>and",
        "&&=>and"
      ]
    },
    {
      "type": "pattern_replace",
      "pattern": "(v[0-9.]+)",
      "replacement": "latest version"
    }
  ],
  "tokenizer": "standard",
  "text": "<html><body><div><span>kibana v7.6.1 && elasticsearch v7.6.1<span></div><body><html>"
}

2. Token Filters

Token Filters对Tokenizer分词后的结果进行再加工,包括字符处理,过滤,删除等操作,es内置的Token Filters包括: lowercase(转小写), stop(删除停止词), synonym(添加同义词)。

案例演示

# filter: "stop"

# 默认停用词列表全是小写词语,单词'A'虽然是停用词,但因为是大写的,单独使用stop这个token filter无法将其过滤掉。

POST _analyze
{
  "tokenizer": "standard",
  "filter": [
    "stop"
  ],
  "text": "A man sat alone on a stone bench"
}

# filter: "stop" and "lowercase"

# 注意两者的作用顺序

POST _analyze
{
  "tokenizer": "standard",
  "filter": [
    "lowercase",
    "stop"
  ],
  "text": "A man sat alone on a stone bench"
}

二、在索引中自定义分析器Analyzer

案例演示

案例01

# 通过组合character filter, tokernizer, token filter来实现自定义的分析器

# standard_custom: 是自定义分析器的名称

PUT movies
{
  "settings": {
    "number_of_replicas": 1,
    "number_of_shards": 1,
    "analysis": {
      "analyzer": {
        "standard_custom": {
          "type": "custom",
          "char_filter": [
            "html_strip"
          ],
          "tokenizer": "standard",
          "filter": [
            "lowercase",
            "stop"
          ]
        }
      }
    }
  }
}

# 使用自定义的分析器和标准分析器(注意观察两者结果的区别)

GET movies/_analyze
{
  "analyzer": "standard_custom",
  "text": "<html><body><div><span>A man sat alone on a stone bench<span></div><body><html>"
}

GET movies/_analyze
{
  "analyzer": "standard",
  "text": "<html><body><div><span>A man sat alone on a stone bench<span></div><body><html>"
}

案例02

PUT songs
{
  "settings": {
    "number_of_replicas": 1,
    "number_of_shards": 1,
    "analysis": {
      "char_filter": {
        "CF1": {
          "type": "pattern_replace",
          "pattern": "(v[0-9.]+)",
          "replacement": "latest version"
        },
        "CF2": {
          "type": "mapping",
          "mappings": [
            "&=>and",
            "&&=>and"
          ]
        }
      },
      "analyzer": {
        "standard_custom": {
          "type": "custom",
          "char_filter": [
            "html_strip",
            "CF1",
            "CF2"
          ],
          "tokenizer": "standard",
          "filter": [
            "lowercase",
            "stop"
          ]
        }
      }
    }
  }
}

# 使用自定义的分析器

GET songs/_analyze
{
  "analyzer": "standard_custom",
  "text": "<html><body><div><span>A man sat alone on a stone bench & kibana v7.6.1 && elasticsearch v7.6.1<span></div><body><html>"
}

ElasticSearch自定义分析器(custom analyzer)相关推荐

  1. Elasticsearch 自定义分析器Analyzer

    java学习讨论群:725562382 2,自定义分析器Analyzer curl -X PUT "192.168.0.120:9200/simple_example" -H 'C ...

  2. es - elasticsearch 自定义分析器 - 内建分词过滤器 - 11

    世界上并没有完美的程序,但是我们并不因此而沮丧,因为写程序就是一个不断追求完美的过程. 自定义分析器 : Character filters :     1. 作用 : 字符的增.删.改转换      ...

  3. es - elasticsearch自定义分析器 - 内建分词过滤器 - 10

    世界上并没有完美的程序,但是我们并不因此而沮丧,因为写程序就是一个不断追求完美的过程. 自定义分析器 : Character filters :     1. 作用 : 字符的增.删.改转换      ...

  4. ElasticSearch 自定义分词器Analyzer示例

    一.前提概述 接下来定义一个index,并在该index中使用自定义分词器. 假设在ES中有这么一个index,用来存储用户在什么时间调用了哪个接口,调用的入参是什么的这么一个信息(即服务网关日志), ...

  5. Elasticsearch –使用模式替换过滤器和自定义分析器忽略查询中的特殊字符

    使用Elasticsearch 5,我们有一个字段,例如驾驶执照编号,其中的值可能包含特殊字符,并且由于用户在有限的验证范围内输入了值,因此值的大小写不一致. 例如,这些是假设值: CA-123-45 ...

  6. Elasticsearch:Standard Text Analyzer - 标准文本分析器

    Elasticsearch 提供了超过很多开箱即用的分析器,我们可以在文本分析阶段使用它们. 这些分析器很可能足以满足基本情况,但如果需要创建自定义分析器,可以通过使用构成该模块的所需组件实例化一个新 ...

  7. Elasticsearch之分析(analysis)和分析器(analyzer)。

    分析(analysis)是这样一个过程: 首先,表征化一个文本块为适用于倒排索引单独的词(term). 然后标准化这些词为标准形式,提高他们的"可搜索性"或"查全率&qu ...

  8. 【Es】ElasticSearch 自定义分词器

    1.分词器 转载:https://blog.csdn.net/gwd1154978352/article/details/83343933 分词器首先看文章:[Elasticsearch]Elasti ...

  9. Elasticsearch:通过结合 Elasticsearch 词干分析器和同义词来提高搜索相关性

    在之前的博客中,我们介绍了如何将同义词合并到由 Elasticsearch 驱动的应用程序中. 在这里,我以该博客为基础,展示了如何结合词干分析器(stemmer)和多词同义词(multi-word ...

最新文章

  1. python文件对象提供了3个读方法、分别是-Python读写文件模式和文件对象方法实例详解...
  2. QNX6.5编译libcurl
  3. AtCoder AGC014E Blue and Red Tree (启发式合并)
  4. Web前端技术分享:全栈工程师常用的开发工具
  5. 浅读vue-router源码,了解vue-router基本原理
  6. Excel: 如何对Excel2007工作表做统一编辑修改
  7. 计算机软件在哪里建文本文档,如何新建文档
  8. 2017年全国大学生电子竞赛电源A题
  9. MSP430学习笔记(一)--从点灯说起
  10. 金仓数据库KingbaseES服务启动失败原因
  11. php normalize,PHP DOMNode normalize()用法及代码示例
  12. 项目分享之敲击床头盒控制床头灯的开关
  13. 爬了 48048 条评论,解读 9.3 分的「毒液」是否值得一看?
  14. php 没有读取权限能不能复制,“需要提供管理员权限才能复制此文件夹”怎么办...
  15. pytorch的transform中ToTensor接着Normalize
  16. 在南宁做网站找哪家好
  17. linux bind教程,Linux Bind系列视频教程(小耗子出品22集)
  18. 机器学习基础--回归(Regression)
  19. 通胀叙事下 美国难以重现沃尔克时代
  20. Java SPI实现插件化

热门文章

  1. 杭电计算机导师6,杭州电子科技大学计算机学院导师教师师资介绍简介-贾刚勇...
  2. android wifi布局,Android使用 WiFi 建立 P2P 连接
  3. vue实现头部吸顶描点
  4. zemax评价函数编辑器_zemax默认评价函数使用方法
  5. 22届计算机考研复试技巧以及注意事项高频问答35问Python集锦【一定要记牢】
  6. MySQL基础知识,如果有疏漏、错误的地方请大家指出
  7. 原生JS实现公告栏文字横向滚动(通告栏)
  8. python实现批量修改图片颜色
  9. react 发post请求 通过a标签 下载pdf文档
  10. a+aa+aaa+aaaa+aaaaa.....