带你读《Elastic Stack 实战手册》之35:——3.4.2.17.4.Analyzers / Custom analyzers(4)

简介: 带你读《Elastic Stack 实战手册》之35:——3.4.2.17.4.Analyzers / Custom analyzers(4)

《Elastic Stack 实战手册》——三、产品能力——3.4.入门篇——3.4.2.Elasticsearch基础应用——3.4.2.17.Text analysis, settings 及 mappings——3.4.2.17.4.Analyzers / Custom analyzers(3) https://developer.aliyun.com/article/1229774



配置项

 

mappings 提供用于匹配字符映射键值对数组,每个元素格式为 key => value。 和 mappings_path 二选一。

 

mappings_path 指定键值对文件的保存路径。当键值对数量巨大时,Elasticsearch 支持把键值对保存为文件,通过指定文件路径加载。和 mappings 二选一。

 

1、文件需要保存在 Elasticsearch 安装目录中的 config 文件夹下,文件访问权限设置为

Elasticsearch 的运行用户 。

2、必须是UTF-8格式。

3、每组键值对单独一行保存。

 

创建 mapping.txt 存放映射字符,文件保存在 Elasitcsearch 安装目录中的 config 文件夹下。

 

mappings.txt 将 - 和 _ 映射为空字符串
- => 
_ =>
JSON
POST _analyze
{
  "char_filter": [
    {
      "type": "mapping",
      "mappings_path":"mappings.txt" 
    }
  ],
  "text": ["Spider-Man"]
}
#Response
{
  "tokens" : [
    {
      "token" : "SpiderMan",
      "start_offset" : 0,
      "end_offset" : 10,
      "type" : "word",
      "position" : 0
    }
  ]
}

Pattern replace character filter

 

pattern_replace 过滤器通过正则表达式把匹配到的字符进行替换,替换的字符中可以引用匹配的正则组。

 

POST _analyze
{
  "char_filter": [
    {
      "type": "pattern_replace",
      "pattern": "[^0-9]",            #1
      "replacement": ""                #2
    }
  ],
  "text": [
    "+86010 5842 3584",
    "010-56812546"
  ]
}

#1 匹配文本中的非数字。

#2 匹配到的内容使用空字符串替换,表示删除匹配到的内容。


#Response
{
  "tokens" : [
    {
      "token" : "8601058423584",
      "start_offset" : 1,
      "end_offset" : 16,
      "type" : "word",
      "position" : 0
    },
    {
      "token" : "01056812546",
      "start_offset" : 17,
      "end_offset" : 29,
          "type" : "word",
      "position" : 101
    }
  ]
}

配置项

 

pattern 用于匹配字符的正则表达式。

 

replacement 替换的目标字符串,可以引用正则表达式匹配到组。

 

flags Java 中正则表达式匹配标记属性,多个标记属性使用 | 竖线分割。

 

正则表达式相关设置参考:

 

正则表达式组:https://docs.oracle.com/javase/8/docs/api/java/util/regex/Matcher.html#appendReplacement-java.lang.StringBuffer-java.lang.String-

标记属性值:https://docs.oracle.com/javase/8/docs/api/java/util/regex/Pattern.html#field.summary

 

Tokenizer

 

Standard Tokenizer

 

standard 是 Elasticsearch 中默认切分方式,基于 Unicode Text Segmentation 算法实现。在英文中主要根据非数字和字母符号进行切分,适用于大多数语言。

 

GET _analyze
{
  "tokenizer": "standard",
  "text": "Hey!How are you?"
}
#Response
[ Hey, How, are, you ]

配置项

 

max_token_length 分词后单词最大长度,超过将会被切分成多个,默认长度255。


GET _analyze
{
  "tokenizer": {
    "type": "standard",
    "max_token_length": 5
  },
  "text": "The sun is shining"
}
#Response
[ The, sun, is, shini, ng ]

Letter Tokenizer

 

letter 会把不是字母的字符当作分隔符对文本进行切分,此方式不包含配置项。


GET _analyze
{
  "tokenizer": "letter",
  "text": "support@elastic.co"
}
#Response
[ support, elastic, co ]

Lowercase Tokenizer

 

lowercase 和 letter 切分方式相同,把不是字母的字符当作分隔符对文本进行切分。同时会把切分后的单词转换小写。

GET _analyze
{
  "tokenizer": "letter",
  "text": "Support@Elastic.CO"
}
#Response
[ support, elastic, co ]

Whitespace Tokenizer

whitespace 使用文本中的空格进行切分。


GET _analyze
{
  "tokenizer": "whitespace",
  "text": "Heya You know,For search!"
}
#Response
[ Heya, You, know,For, sesarch! ]



《Elastic Stack 实战手册》——三、产品能力——3.4.入门篇——3.4.2.Elasticsearch基础应用——3.4.2.17.Text analysis, settings 及 mappings——3.4.2.17.4.Analyzers / Custom analyzers(5) https://developer.aliyun.com/article/1229771

相关实践学习
以电商场景为例搭建AI语义搜索应用
本实验旨在通过阿里云Elasticsearch结合阿里云搜索开发工作台AI模型服务,构建一个高效、精准的语义搜索系统,模拟电商场景,深入理解AI搜索技术原理并掌握其实现过程。
ElasticSearch 最新快速入门教程
本课程由千锋教育提供。全文搜索的需求非常大。而开源的解决办法Elasricsearch(Elastic)就是一个非常好的工具。目前是全文搜索引擎的首选。本系列教程由浅入深讲解了在CentOS7系统下如何搭建ElasticSearch,如何使用Kibana实现各种方式的搜索并详细分析了搜索的原理,最后讲解了在Java应用中如何集成ElasticSearch并实现搜索。  
相关文章
|
7月前
|
网络协议 安全
说一下 TCP 的三次握手四次挥手过程
我是小假 期待与你的下一次相遇 ~
684 1
|
10月前
|
Java API 开发工具
蚂蚁百宝箱 ✖️ 调用对话型智能体
通过调用本接口,开发者可以向指定智能体发起对话,支持在对话时添加上下文消息,便于智能体做出合理的回复。
338 0
|
5月前
|
人工智能 Linux API
阿里云/本地部署 OpenClaw 全场景实战:从早报到知识库,8类自动化工作流完整配置指南
在日常工作与生活中,大量“简单但繁琐、重复又耗时”的事务不断消耗精力:整理文件、筛选资讯、收发邮件、管理日程、追踪动态、发布内容、设置提醒、沉淀知识。OpenClaw作为轻量化AI智能体平台,无需编程基础,即可通过技能与定时任务,全自动处理以上事务。本文通过8个可直接落地的真实场景,完整讲解配置方法、代码命令与使用效果,同时提供2026年阿里云云端部署、MacOS/Linux/Windows11本地部署流程,以及阿里云千问大模型API与免费Coding Plan API的完整配置方案,搭配常见问题解答,让普通人也能快速拥有7×24小时的AI助手,真正实现效率提升。
1657 0
|
7月前
|
机器学习/深度学习 运维 监控
基于 YOLOv8 的高压输电线路(绝缘子、电缆)故障自动识别 [目标检测完整源码]
本文介绍基于YOLOv8的高压输电线路故障智能识别系统,融合深度学习与可视化技术,实现电缆破损、绝缘子损坏、植被遮挡等典型缺陷的自动检测。系统采用PyQt5构建友好界面,支持图片、视频及实时流输入,具备高效、准确、易用特点,适用于无人机巡检与在线监控,助力电力运维智能化升级。
414 9
基于 YOLOv8 的高压输电线路(绝缘子、电缆)故障自动识别 [目标检测完整源码]
|
6月前
|
人工智能 自然语言处理 网络协议
2026年阿里云轻量服务器部署OpenClaw(Clawdbot)新手喂饭教程(零代码+全图解)
2026年,OpenClaw(前身为Clawdbot、Moltbot)凭借“自然语言指令+任务自动化执行”的核心优势,成为新手入门AI自动化的首选工具。这款开源AI代理平台无需专业编程基础,仅需输入日常口语化指令,就能完成文件处理、日程管理、多工具协同、代码生成等重复性工作,堪称“私人AI数字员工”。
820 7
|
人工智能 供应链 监控
流程优化:提升电商运营效率的新路径
在数字经济的推动下,电商运营成为企业连接消费者、推动业务增长的核心环节。本文从数据洞察、策略制定、执行优化及协同办公四个方面,深入探讨电商运营的各个环节,旨在通过高效协同工具提升运营效率,优化用户体验,实现业务持续增长。
|
存储 Prometheus 监控
InfluxDB和 Prometheus
【5月更文挑战第13天】InfluxDB和 Prometheus
1274 10
十分钟了解阿里云数据库RDS
简介:阿里云关系型数据库(Relational Database Service,简称RDS)是一种稳定可靠、可弹性伸缩的在线数据库服务。基于阿里云分布式文件系统和SSD盘高性能存储,RDS支持MySQL、SQL Server、PostgreSQL、PPAS(Postgre Plus Advanced Server,高度兼容Oracle数据库)和MariaDB TX引擎,并且提供了容灾、备份、恢复、监控、迁移等方面的全套解决方案,彻底解决数据库运维的烦恼。
13427 0
|
机器学习/深度学习 SQL
SQL Server提示:安装程序无法与下载服务器联系。请提供 Microsoft机器学习服务器安装文件的位置。。。。
今天在安装SQL Server的过程中,出现问题:安装程序无法与下载服务器联系。请提供 Microsoft机器学习服务器安装文件的位,然后单击“下一步”,可从以下位置下载安装文件。
SQL Server提示:安装程序无法与下载服务器联系。请提供 Microsoft机器学习服务器安装文件的位置。。。。
webpack优化篇(四十一):体积分析:使用 webpack-bundle-analyzer
webpack优化篇(四十一):体积分析:使用 webpack-bundle-analyzer
505 0
webpack优化篇(四十一):体积分析:使用 webpack-bundle-analyzer

热门文章

最新文章