Elasticsearch自定义分词器:搜索与插入场景下的应用

在处理中文等复杂语言的搜索时,Elasticsearch的分词器起着至关重要的作用。Elasticsearch允许我们自定义分词器,以满足特定的索引和搜索需求。有时,我们在插入数据时使用一种分词策略,而在搜索时使用另一种,以优化性能和搜索结果的相关性。本文将介绍如何在Elasticsearch中创建自定义分词器,并在插入和搜索时使用不同的分词器。

自定义分词器的基本概念

在Elasticsearch中,分词器(Analyzer)由以下三个主要部分组成:

  1. Character Filters(字符过滤器):在Tokenizer之前对文本进行处理。
  2. Tokenizer(分词器):将文本切分成词条。
  3. Token Filters(词条过滤器):对Tokenizer输出的词条进行进一步处理。

环境准备

确保您已经安装了Elasticsearch,并且对Elasticsearch的基本操作和分词器有一定的了解。

创建自定义分词器

我们将创建一个自定义分词器my_analyzer,它在索引时使用ik_max_word tokenizer和pinyin filter,而在搜索时使用ik_smart tokenizer。

定义索引和分词器

json 复制代码
PUT /test
{
  "settings": {
    "analysis": {
      "analyzer": {
        "my_analyzer": {
          "tokenizer": "ik_max_word",
          "filter": ["pinyin"]
        }
      },
      "filter": {
        "pinyin": {
          "type": "pinyin",
          "keep_first_letter": true
        }
      }
    }
  },
  "mappings": {
    "properties": {
      "name": {
        "type": "text",
        "analyzer": "my_analyzer",
        "search_analyzer": "ik_smart"
      }
    }
  }
}

插入数据示例

使用自定义分词器my_analyzer插入数据:

json 复制代码
POST /test/_doc/1
{
  "id": 1,
  "name": "狮子"
}

POST /test/_doc/2
{
  "id": 2,
  "name": "虱子"
}

搜索数据示例

使用ik_smart分词器搜索包含"掉入狮子笼咋办"的数据:

json 复制代码
GET /test/_search
{
  "query": {
    "match": {
      "name": "掉入狮子笼咋办"
    }
  }
}

结语

通过自定义分词器,我们可以更灵活地控制Elasticsearch的索引和搜索行为。在本例中,我们创建了一个自定义分词器my_analyzer,它在索引时使用ik_max_word tokenizer和pinyin filter进行分词,并在搜索时使用ik_smart tokenizer。这种方法可以提高搜索的灵活性和准确性,尤其是在处理中文等需要复杂分词逻辑的语言时。

希望本文能帮助您了解如何在Elasticsearch中创建和使用自定义分词器,以及如何在不同的搜索和插入场景下应用不同的分词策略。

相关推荐
冬至喵喵10 分钟前
二进制编码、base64
大数据
coding-fun43 分钟前
电子发票批量提取导出合并助手
大数据·数据库
墨香幽梦客1 小时前
家具ERP口碑榜单,物料配套专用工具推荐
大数据·人工智能
悟纤2 小时前
Suno 爵士歌曲创作提示整理 | Suno高级篇 | 第22篇
大数据·人工智能·suno·suno ai·suno api·ai music
yl45302 小时前
污泥清淤机器人实践复盘分享
大数据·人工智能·机器人
B站计算机毕业设计超人2 小时前
计算机毕业设计Python+百度千问大模型微博舆情分析预测 微博情感分析可视化 大数据毕业设计(源码+LW文档+PPT+讲解)
大数据·hive·hadoop·python·毕业设计·知识图谱·课程设计
irizhao3 小时前
《高质量数据集 分类指南》解读(TC609-5-2025-03)由全国数据标准化技术委员会发布
大数据·人工智能
min1811234563 小时前
HR人力资源招聘配置流程图制作教程
大数据·网络·人工智能·架构·流程图·求职招聘
Elastic 中国社区官方博客4 小时前
使用 Elasticsearch 管理 agentic 记忆
大数据·数据库·人工智能·elasticsearch·搜索引擎·ai·全文检索
ask_baidu6 小时前
监控Source端Pg对Flink CDC的影响
java·大数据·postgresql·flink