elasticsearch 自定义分析器

本文详细介绍了Elasticsearch中的自定义分析器配置,包括tokenizer、char_filter和filter的使用。通过示例展示了如何创建一个分析器,用于处理文本,如将特定表情转换为关键词,并进行分词和过滤操作。该分析器能够帮助优化文本索引和搜索性能。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

自定义分析器

分析器analyzer主要有以下几个字段

  • type 指定内置的分析器,custom可以忽略
  • tokenizer
  • char_filter
  • filter
  • position_increment_gap 目前还没用到,不知道

各个作用

analyzer/analysis (分析器)
文档document 如何转化为 倒排索引,一段text变成一个个term,这个过程叫做文本分析.

Tokenizer(分词器)
语干中提取词元(Token)

Filter(过滤器)
Character Filter(字符过滤器)
Token词元会进一步处理, 如转小写等操作,被处理后得到Term()

1个分析器,由1个tokenizer,0/more个filter,0/more个char_filter组成。

示例

PUT my-index-000001
{
  "settings": {
    "analysis": {
      "analyzer": {
        # 自定义分析器,指定tokenizer、char_filter、filter
        "my_custom_analyzer": {
          "char_filter": [
            "emoticons"
          ],
          "tokenizer": "punctuation",
          "filter": [
            "lowercase",
            "english_stop"
          ]
        }
      },
      # 定义3大件
      # 分词器
      "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?"
}

参考

https://www.elastic.co/guide/en/elasticsearch/reference/current/analysis-custom-analyzer.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值