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

相关文章

ElasticSearch+Kibana通过Docker部署到Linux服务器中操作方法

《ElasticSearch+Kibana通过Docker部署到Linux服务器中操作方法》本文介绍了Elasticsearch的基本概念,包括文档和字段、索引和映射,还详细描述了如何通过Docker... 目录1、ElasticSearch概念2、ElasticSearch、Kibana和IK分词器部署

CSS自定义浏览器滚动条样式完整代码

《CSS自定义浏览器滚动条样式完整代码》:本文主要介绍了如何使用CSS自定义浏览器滚动条的样式,包括隐藏滚动条的角落、设置滚动条的基本样式、轨道样式和滑块样式,并提供了完整的CSS代码示例,通过这些技巧,你可以为你的网站添加个性化的滚动条样式,从而提升用户体验,详细内容请阅读本文,希望能对你有所帮助...

Java实现Elasticsearch查询当前索引全部数据的完整代码

《Java实现Elasticsearch查询当前索引全部数据的完整代码》:本文主要介绍如何在Java中实现查询Elasticsearch索引中指定条件下的全部数据,通过设置滚动查询参数(scrol... 目录需求背景通常情况Java 实现查询 Elasticsearch 全部数据写在最后需求背景通常情况下

Java操作ElasticSearch的实例详解

《Java操作ElasticSearch的实例详解》Elasticsearch是一个分布式的搜索和分析引擎,广泛用于全文搜索、日志分析等场景,本文将介绍如何在Java应用中使用Elastics... 目录简介环境准备1. 安装 Elasticsearch2. 添加依赖连接 Elasticsearch1. 创

SpringBoot 自定义消息转换器使用详解

《SpringBoot自定义消息转换器使用详解》本文详细介绍了SpringBoot消息转换器的知识,并通过案例操作演示了如何进行自定义消息转换器的定制开发和使用,感兴趣的朋友一起看看吧... 目录一、前言二、SpringBoot 内容协商介绍2.1 什么是内容协商2.2 内容协商机制深入理解2.2.1 内容

基于MySQL Binlog的Elasticsearch数据同步实践

一、为什么要做 随着马蜂窝的逐渐发展,我们的业务数据越来越多,单纯使用 MySQL 已经不能满足我们的数据查询需求,例如对于商品、订单等数据的多维度检索。 使用 Elasticsearch 存储业务数据可以很好的解决我们业务中的搜索需求。而数据进行异构存储后,随之而来的就是数据同步的问题。 二、现有方法及问题 对于数据同步,我们目前的解决方案是建立数据中间表。把需要检索的业务数据,统一放到一张M

【前端学习】AntV G6-08 深入图形与图形分组、自定义节点、节点动画(下)

【课程链接】 AntV G6:深入图形与图形分组、自定义节点、节点动画(下)_哔哩哔哩_bilibili 本章十吾老师讲解了一个复杂的自定义节点中,应该怎样去计算和绘制图形,如何给一个图形制作不间断的动画,以及在鼠标事件之后产生动画。(有点难,需要好好理解) <!DOCTYPE html><html><head><meta charset="UTF-8"><title>06

自定义类型:结构体(续)

目录 一. 结构体的内存对齐 1.1 为什么存在内存对齐? 1.2 修改默认对齐数 二. 结构体传参 三. 结构体实现位段 一. 结构体的内存对齐 在前面的文章里我们已经讲过一部分的内存对齐的知识,并举出了两个例子,我们再举出两个例子继续说明: struct S3{double a;int b;char c;};int mian(){printf("%zd\n",s

Spring 源码解读:自定义实现Bean定义的注册与解析

引言 在Spring框架中,Bean的注册与解析是整个依赖注入流程的核心步骤。通过Bean定义,Spring容器知道如何创建、配置和管理每个Bean实例。本篇文章将通过实现一个简化版的Bean定义注册与解析机制,帮助你理解Spring框架背后的设计逻辑。我们还将对比Spring中的BeanDefinition和BeanDefinitionRegistry,以全面掌握Bean注册和解析的核心原理。

Oracle type (自定义类型的使用)

oracle - type   type定义: oracle中自定义数据类型 oracle中有基本的数据类型,如number,varchar2,date,numeric,float....但有时候我们需要特殊的格式, 如将name定义为(firstname,lastname)的形式,我们想把这个作为一个表的一列看待,这时候就要我们自己定义一个数据类型 格式 :create or repla