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

相关推荐
hashiqimiya18 分钟前
windows的hadoop集群环境直接配
大数据·hadoop·分布式
AI营销先锋1 小时前
原圈科技GEO解密:AI营销变革下,如何抢占增长先机?
大数据·人工智能
pingao1413782 小时前
智慧井盖传感器:革新传统,开启地下管网智能运维新时代
大数据
云飞云共享云桌面2 小时前
非标自动化研发成本高?云飞云共享云桌面:1台主机=10台工作站,年省数十万。
大数据·运维·服务器·人工智能·自动化·云计算·电脑
互联网江湖4 小时前
快手营收利润双增,可灵AI会不会成为第二个Seedance?
大数据·人工智能
KANGBboy4 小时前
ES 父子索引使用
大数据·elasticsearch·搜索引擎
pp起床5 小时前
Part02:基本概念以及基本要素
大数据·人工智能·算法
Gauss松鼠会5 小时前
【GaussDB】LLVM技术在GaussDB等数据库中的应用
大数据·数据库·架构·数据库开发·gaussdb·llvm
易天ETU6 小时前
100G BIDI 80km ZR4光模块:长距离传输的革新力量
大数据·光模块·易天光通信
七夜zippoe6 小时前
OpenClaw 接入 Discord:从零开始
大数据·人工智能·microsoft·discord·openclaw