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中创建和使用自定义分词器,以及如何在不同的搜索和插入场景下应用不同的分词策略。

相关推荐
呆呆小金人12 分钟前
SQL字段对齐:性能优化与数据准确的关键
大数据·数据仓库·sql·数据库开发·etl·etl工程师
zskj_zhyl3 小时前
智慧康养新篇章:七彩喜如何重塑老年生活的温度与尊严
大数据·人工智能·科技·物联网·生活
苗壮.4 小时前
「个人 Gitee 仓库」与「企业 Gitee 仓库」同步的几种常见方式
大数据·elasticsearch·gitee
驾数者4 小时前
Flink SQL入门指南:从零开始搭建流处理应用
大数据·sql·flink
乌恩大侠4 小时前
DGX Spark 恢复系统
大数据·分布式·spark
KM_锰5 小时前
flink开发遇到的问题
大数据·flink
Elastic 中国社区官方博客5 小时前
如何使用 Ollama 在本地设置和运行 GPT-OSS
人工智能·gpt·elasticsearch·搜索引擎·ai·语言模型
Elasticsearch8 小时前
Elastic Streams 中的数据协调:稳健架构深度解析
elasticsearch
Elasticsearch8 小时前
使用 Instrumentation Score 和 Elastic 的 OpenTelemetry 数据质量洞察
elasticsearch
人大博士的交易之路8 小时前
龙虎榜——20251106
大数据·数学建模·数据分析·缠论·缠中说禅·龙虎榜