ElasticSearch中analyzer和search_analyzer

本文详细介绍了如何在Elasticsearch 7.6.1中设置不同Analyzer用于索引和查询,通过实例演示了ik_smart和standard分词器在'mapping_analyzer'中的配置,并对比了它们的使用场景。

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

基于elasticsearch7.6.1 和 kibana7.6.1

1. 基础介绍

analyzer:插入文档时,将text类型的字段做分词然后插入倒排索引。

search_analyzer:查询时,先对要查询的text类型的输入做分词,再去倒排索引中搜索。

如果想要让'索引'和'查询'时使用不同的分词器,ElasticSearch也是能支持的,只需要在字段上加上search_analyzer参数。索引时,只会去看字段有没有定义analyzer,有定义的话就用定义的,没定义就用es预设的。查询时,会先去看字段有没有定义search_analyzer,如果没有定义,就去看有没有analyzer,再没有定义,才会去使用es预设的

2. 案例

# 创建索引
PUT /mapping_analyzer
{
  "mappings": {
    "dynamic": "strict",
    "properties": {
      "name": {
        "type": "text",
        "analyzer": "standard",
        "search_analyzer": "ik_smart"
      },
      "desc": {
        "type": "text",
        "analyzer": "ik_smart",
        "search_analyzer": "ik_smart"
      }
    }
  }
}


# 添加文档
PUT /mapping_analyzer/_doc/1
{
  "name": "我是中国共产党",
  "desc": "我是中国共产党"
}

# 查询测试 (name字段--索引时使用standard, 查询时使用ik_smart)
GET /mapping_analyzer/_search
{
  "query": {
    "match": {
      "name": "党"
    }
  }
}


GET /mapping_analyzer/_search
{
  "query": {
    "match": {
      "name": "中国共产党"
    }
  }
}


# 查询测试 (desc字段--索引时使用ik_smart, 查询时使用ik_smart)
GET /mapping_analyzer/_search
{
  "query": {
    "match": {
      "desc": "中国共产党"
    }
  }
}

3. ik_smart和standard分词器的区别

# ik_smart分词器
GET _analyze
{
  "analyzer": "ik_smart",
  "text": "我是中国共产党"
}


# standard分词器
GET _analyze
{
  "analyzer": "standard",
  "text": "我是中国共产党"
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值