【Elasticsearch】-配置分词器

本文涉及的产品
检索分析服务 Elasticsearch 版,2核4GB开发者规格 1个月
简介: Elasticsearch中的文本分析发生在以下两个时机,索引时 当文档被索引时,任何文本字段值都会被分析;搜索时 在文本字段上运行全文搜索时,会分析查询字符串。

参考文档

https://www.elastic.co/guide/en/elasticsearch/reference/7.11/analysis.html

一、简介

文本分析发生在以下两个时机

索引时 当文档被索引时,任何文本字段值都会被分析。

搜索时 在文本字段上运行全文搜索时,会分析查询字符串

二、索引时设置分词器

在大多数情况下,应在索引和搜索时使用相同的分析器。 这可确保字段的值和查询字符串更改为相同形式的标记。 反过来,这可以确保令牌在搜索期间按预期匹配。

在索引上设置并使用自定义分析器

PUT my-index-000001

{

 "settings": {

   "analysis": {

     "analyzer": {

       "std_folded": {

         "type": "custom",

         #定义一个名为 std_folded 的自定义分析器。

         "tokenizer": "standard",

         "filter": [

           "lowercase",

           "asciifolding"

         ]

       }

     }

   }

 },

 "mappings": {

   "properties": {

     #字段 my_text 使用 std_folded 分析器。

     "my_text": {

       "type": "text",

       "analyzer": "std_folded"

     }

   }

 }

}


GET my-index-000001/_analyze

{

 "analyzer": "std_folded",

 "text":     "Is this déjà vu?"

}


GET my-index-000001/_analyze

{

 "field": "my_text",

 "text":  "Is this déjà vu?"

}

自定义分析器

当内置分析器不能满足您的需求时,您可以创建一个自定义分析器,它使用以下适当组合:

  • 零个或多个字符过滤器
  • 分词器
  • 零个或多个令牌过滤器。

自定义分词器接收以下参数

tokenizer

内置或定制的分词器。

必需

char_filter

可选的内置或自定义字符过滤器数组。

非必需

filter

可选的内置或自定义令牌过滤器数组。

非必需

以下是自定分词器的一个例子

PUT my-index-000001

{

 "settings": {

   "analysis": {

     "analyzer": {

       "my_custom_analyzer": {

         "type": "custom",

         "char_filter": [

           "emoticons"

         ],

         "tokenizer": "punctuation",

         "filter": [

           "lowercase",

           "english_stop"

         ]

       }

     },

     "tokenizer": {

       "punctuation": {

         "type": "pattern",

         "pattern": "[ .,!?]"

       }

     },

     "char_filter": {

       "emoticons": {

         "type": "mapping",

         "mappings": [

           ":) => _happy_",

           ":( => _sad_"

         ]

       }

     },

     "filter": {

       "english_stop": {

         "type": "stop",

         "stopwords": "_english_"

       }

     }

   }

 }

}


POST my-index-000001/_analyze

{

 "analyzer": "my_custom_analyzer",

 "text": "I'm a :) person, and you?"

}

Elasticsearch 通过依次检查以下参数来确定要使用的索引分析器:

  1. 字段的分析器映射参数。
  2. analysis.analyzer.default 索引设置。
  3. 如果没有指定这些参数,则使用标准分析器。


以下创建索引 API 请求将空白分析器设置为标题字段的分析器。

PUT my-index-000001

{

 "mappings": {

   "properties": {

     "title": {

       "type": "text",

       "analyzer": "whitespace"

     }

   }

 }

}

除了字段级分析器之外,您还可以设置备用分析器以使用 analysis.analyzer.default 设置。

PUT my-index-000001

{

 "settings": {

   "analysis": {

     "analyzer": {

       "default": {

         "type": "simple"

       }

     }

   }

 }

}

二、搜索时设置分词器

在搜索时,Elasticsearch 通过依次检查以下参数来确定要使用的分析器:

  1. 搜索查询中的分析器参数。
  2. 字段的 search_analyzer 映射参数。
  3. analysis.analyzer.default_search 索引设置。
  4. 字段的分析器映射参数。
  5. 如果没有指定这些参数,则使用标准分析器。

编写全文查询时,可以使用 analyzer 参数指定搜索分析器。 如果提供,它将覆盖任何其他搜索分析器。比如以下例子

GET my-index-000001/_search

{

 "query": {

   "match": {

     "message": {

       "query": "Quick foxes",

       "analyzer": "stop"

     }

   }

 }

}

创建索引时设置默认的搜索分析器

# 以下创建索引 API 请求将空白分析器设置为 my-index-000001 索引的默认搜索分析器

PUT my-index-000001

{

 "settings": {

   "analysis": {

     "analyzer": {

       "default": {

         "type": "simple"

       },

       "default_search": {

         "type": "whitespace"

       }

     }

   }

 }

}

相关实践学习
使用阿里云Elasticsearch体验信息检索加速
通过创建登录阿里云Elasticsearch集群,使用DataWorks将MySQL数据同步至Elasticsearch,体验多条件检索效果,简单展示数据同步和信息检索加速的过程和操作。
ElasticSearch 入门精讲
ElasticSearch是一个开源的、基于Lucene的、分布式、高扩展、高实时的搜索与数据分析引擎。根据DB-Engines的排名显示,Elasticsearch是最受欢迎的企业搜索引擎,其次是Apache Solr(也是基于Lucene)。 ElasticSearch的实现原理主要分为以下几个步骤: 用户将数据提交到Elastic Search 数据库中 通过分词控制器去将对应的语句分词,将其权重和分词结果一并存入数据 当用户搜索数据时候,再根据权重将结果排名、打分 将返回结果呈现给用户 Elasticsearch可以用于搜索各种文档。它提供可扩展的搜索,具有接近实时的搜索,并支持多租户。
相关文章
|
22天前
|
存储 缓存 固态存储
优化Elasticsearch 硬件配置
优化Elasticsearch 硬件配置
65 5
|
2月前
|
自然语言处理 大数据 应用服务中间件
大数据-172 Elasticsearch 索引操作 与 IK 分词器 自定义停用词 Nginx 服务
大数据-172 Elasticsearch 索引操作 与 IK 分词器 自定义停用词 Nginx 服务
68 5
|
2月前
|
自然语言处理 Java 网络架构
elasticsearch学习三:elasticsearch-ik分词器的自定义配置 分词内容
这篇文章是关于如何自定义Elasticsearch的ik分词器配置以满足特定的中文分词需求。
144 0
elasticsearch学习三:elasticsearch-ik分词器的自定义配置 分词内容
|
22天前
|
缓存 监控 安全
优化Elasticsearch 集群配置
优化Elasticsearch 集群配置
53 4
|
23天前
|
监控 负载均衡 安全
Elasticsearch集群配置优化
Elasticsearch集群配置优化
28 1
|
29天前
|
存储 安全 数据管理
如何在 Rocky Linux 8 上安装和配置 Elasticsearch
本文详细介绍了在 Rocky Linux 8 上安装和配置 Elasticsearch 的步骤,包括添加仓库、安装 Elasticsearch、配置文件修改、设置内存和文件描述符、启动和验证 Elasticsearch,以及常见问题的解决方法。通过这些步骤,你可以快速搭建起这个强大的分布式搜索和分析引擎。
40 5
|
1月前
|
测试技术 API 开发工具
ElasticSearch的IK分词器
ElasticSearch的IK分词器
49 7
|
2月前
|
存储 JSON Java
elasticsearch学习一:了解 ES,版本之间的对应。安装elasticsearch,kibana,head插件、elasticsearch-ik分词器。
这篇文章是关于Elasticsearch的学习指南,包括了解Elasticsearch、版本对应、安装运行Elasticsearch和Kibana、安装head插件和elasticsearch-ik分词器的步骤。
187 0
elasticsearch学习一:了解 ES,版本之间的对应。安装elasticsearch,kibana,head插件、elasticsearch-ik分词器。
|
2月前
|
运维 监控 数据可视化
大数据-171 Elasticsearch ES-Head 与 Kibana 配置 使用 测试
大数据-171 Elasticsearch ES-Head 与 Kibana 配置 使用 测试
72 1
|
3月前
|
存储 自然语言处理 关系型数据库
ElasticSearch基础3——聚合、补全、集群。黑马旅游检索高亮+自定义分词器+自动补全+前后端消息同步
聚合、补全、RabbitMQ消息同步、集群、脑裂问题、集群分布式存储、黑马旅游实现过滤和搜索补全功能
ElasticSearch基础3——聚合、补全、集群。黑马旅游检索高亮+自定义分词器+自动补全+前后端消息同步