ElasticSearch十三--ES--自定义Analyzer分词器

2024-03-28 23:32

本文主要是介绍ElasticSearch十三--ES--自定义Analyzer分词器,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

自定义Analyzer

多字段特性

实现精确匹配

  • 增加一个 keyword 字段

使用不同的analyzer

  • 不同语言
  • pinyin 字段的搜索
  • 还支持为 搜索 和 索引 指定不同的 analyzer

Exact Values vs Full Text

Exact Value 包括数字 / 日期 / 具体一个字符串(例如 Apple Store) 精确值 不需要分词

  • ES 中的 keyword

全文本,非结构化的文本数据 需要分词

  • ES 中的 text

自定义分词

当 ES 自带的分词器无法满足时,可以自定义分词器。通过自己组合不同的组件实现

  • Character Filter

  • Tokenizer

  • Token Filter

通过自己组合上面不同的组件,可以实现出不同的分词器效果。

Character Filter

在 Tokenizer 之前对文本进行处理。可以配置多个进行不同的文本处理。会影响 Tokenizer 的 position 和 offset 信息

下面是一些自带的 Character Filter

  • HTML strip 去除 html 标签
  • Mapping 字符串替换
  • Pattern replace 正则匹配替换
Tokenizer

将原始的文本按照一定的规则,切分为词

下面是一些ES内置的 Tokenizer

  • whitespace
  • standard
  • uax_url_email
  • pattern
  • keyword
  • path hierarchy

也可以用 JAVA 开发插件,实现自己的 Tokenizer

Token filter

将 Tokenizer 输出的单词 进行增加修改删除等操作

下面是ES 自带的

  • Lowercase 小写
  • stop 停止词
  • synonym 近义词

这几个操作简单来说就是

  • Character Filter 在分词前进行处理
  • Tokenizer 分词
  • Token Filter 分词后进行处理
自定义分词器

指令

PUT test_home
{"settings":{"analysis":{"analyzer":{my_analyzer:{    //自定义分词器"type":"custom","char_filter":["test"    //自定义 character filter],"tokenizer":"test_tokenizer",  //自定义 tokenizer"filter":[         //token filter"lowercase","english_stop"]},"tokenizer":{         //自定义 tokenizer"test_tokenizer":{"type":"pattern","pattern":"[?]"}},"char_filter":{        //自定义 character filter -替换成_"test":{"type":"mapping","mappings":["-" => "_"]}},"filter":{       //设置 停止词"english_stop":{"type":"stop","stopwords":"_englsh_"}}}}}
}

极客时间 ES 学习笔记

这篇关于ElasticSearch十三--ES--自定义Analyzer分词器的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/856997

相关文章

SpringBoot全局异常拦截与自定义错误页面实现过程解读

《SpringBoot全局异常拦截与自定义错误页面实现过程解读》本文介绍了SpringBoot中全局异常拦截与自定义错误页面的实现方法,包括异常的分类、SpringBoot默认异常处理机制、全局异常拦... 目录一、引言二、Spring Boot异常处理基础2.1 异常的分类2.2 Spring Boot默

自定义注解SpringBoot防重复提交AOP方法详解

《自定义注解SpringBoot防重复提交AOP方法详解》该文章描述了一个防止重复提交的流程,通过HttpServletRequest对象获取请求信息,生成唯一标识,使用Redis分布式锁判断请求是否... 目录防重复提交流程引入依赖properties配置自定义注解切面Redis工具类controller

SpringBoot简单整合ElasticSearch实践

《SpringBoot简单整合ElasticSearch实践》Elasticsearch支持结构化和非结构化数据检索,通过索引创建和倒排索引文档,提高搜索效率,它基于Lucene封装,分为索引库、类型... 目录一:ElasticSearch支持对结构化和非结构化的数据进行检索二:ES的核心概念Index:

kafka自定义分区器使用详解

《kafka自定义分区器使用详解》本文介绍了如何根据企业需求自定义Kafka分区器,只需实现Partitioner接口并重写partition()方法,示例中,包含cuihaida的数据发送到0号分区... 目录kafka自定义分区器假设现在有一个需求使用分区器的方法总结kafka自定义分区器根据企业需求

Elasticsearch 的索引管理与映射配置实战指南

《Elasticsearch的索引管理与映射配置实战指南》在本文中,我们深入探讨了Elasticsearch中索引与映射的基本概念及其重要性,通过详细的操作示例,我们了解了如何创建、更新和删除索引,... 目录一、索引操作(一)创建索引(二)删除索引(三)关闭索引(四)打开索引(五)索引别名二、映射操作(一

C#中通过Response.Headers设置自定义参数的代码示例

《C#中通过Response.Headers设置自定义参数的代码示例》:本文主要介绍C#中通过Response.Headers设置自定义响应头的方法,涵盖基础添加、安全校验、生产实践及调试技巧,强... 目录一、基础设置方法1. 直接添加自定义头2. 批量设置模式二、高级配置技巧1. 安全校验机制2. 类型

SpringBoot AspectJ切面配合自定义注解实现权限校验的示例详解

《SpringBootAspectJ切面配合自定义注解实现权限校验的示例详解》本文章介绍了如何通过创建自定义的权限校验注解,配合AspectJ切面拦截注解实现权限校验,本文结合实例代码给大家介绍的非... 目录1. 创建权限校验注解2. 创建ASPectJ切面拦截注解校验权限3. 用法示例A. 参考文章本文

Vite 打包目录结构自定义配置小结

《Vite打包目录结构自定义配置小结》在Vite工程开发中,默认打包后的dist目录资源常集中在asset目录下,不利于资源管理,本文基于Rollup配置原理,本文就来介绍一下通过Vite配置自定义... 目录一、实现原理二、具体配置步骤1. 基础配置文件2. 配置说明(1)js 资源分离(2)非 JS 资

聊聊springboot中如何自定义消息转换器

《聊聊springboot中如何自定义消息转换器》SpringBoot通过HttpMessageConverter处理HTTP数据转换,支持多种媒体类型,接下来通过本文给大家介绍springboot中... 目录核心接口springboot默认提供的转换器如何自定义消息转换器Spring Boot 中的消息

Python自定义异常的全面指南(入门到实践)

《Python自定义异常的全面指南(入门到实践)》想象你正在开发一个银行系统,用户转账时余额不足,如果直接抛出ValueError,调用方很难区分是金额格式错误还是余额不足,这正是Python自定义异... 目录引言:为什么需要自定义异常一、异常基础:先搞懂python的异常体系1.1 异常是什么?1.2