Elasticsearch分词器--空格分词器(whitespace analyzer)

介绍

  文本分析,是将全文本转换为一系列单词的过程,也叫分词。analysis是通过analyzer(分词器)来实现的,可以使用Elasticearch内置的分词器,也可以自己去定制一些分词器。除了在数据写入时将词条进行转换,那么在查询的时候也需要使用相同的分析器对语句进行分析。

|---------------------|--------------------------|
| 分词器名称 | 处理过程 |
| Standard Analyzer | 默认的分词器,按词切分,小写处理 |
| Simple Analyzer | 按照非字母切分(符号被过滤),小写处理 |
| Stop Analyzer | 小写处理,停用词过滤(the, a, this) |
| Whitespace Analyzer | 按照空格切分,不转小写 |
| Keyword Analyzer | 不分词,直接将输入当做输出 |
| Pattern Analyzer | 正则表达式,默认是\W+(非字符串分隔) |

实战

1、空格分词器展示

POST:http://localhost:9200/_analyze/

复制代码
{
  "analyzer": "whitespace",
  "text": "hello this my white space analyzer"
}

结果:按照空格进行分词处理

复制代码
{
    "tokens":[
        {
            "token":"hello",
            "start_offset":0,
            "end_offset":5,
            "type":"word",
            "position":0
        },
        {
            "token":"this",
            "start_offset":6,
            "end_offset":10,
            "type":"word",
            "position":1
        },
        {
            "token":"my",
            "start_offset":11,
            "end_offset":13,
            "type":"word",
            "position":2
        },
        {
            "token":"white",
            "start_offset":14,
            "end_offset":19,
            "type":"word",
            "position":3
        },
        {
            "token":"space",
            "start_offset":20,
            "end_offset":25,
            "type":"word",
            "position":4
        },
        {
            "token":"analyzer",
            "start_offset":26,
            "end_offset":34,
            "type":"word",
            "position":5
        }
    ]
}

2、空格分词器创建与查询

目前我们有一些应用场景需要根据空格分词之后的内容进行精准查询,这样空格分词器就满足我们的需求了。

(1)创建索引,针对想要分词的字段指定空格分词器

whitespace_analyzer_1:指定为whitespace

content:指定为空格分词器

复制代码
{
  "settings": {
    "analysis": {
      "analyzer": {
        "whitespace_analyzer_1": {
          "type": "whitespace"
        }
      }
    }
  },
  "mappings": {
    "_doc": {
      "properties": {
        "id": {
          "type": "keyword"
        },
        "title": {
          "type": "text"
        },
        "content": {
          "type": "text",
          "analyzer": "whitespace_analyzer_1"
        }
      }
    }
  }
}

(2)索引查询

保存一条数据:

复制代码
{
  "id": "002",
  "title": "科目2",
  "content": "this is whitespace"
}

根据分词查询:

复制代码
{
  "query": {
    "match": {
      "desc": "this"
    }
  }
}

根据不存在的分词查询则查询不到

复制代码
{
  "query": {
    "match": {
      "desc": "that"
    }
  }
}
相关推荐
Elasticsearch4 小时前
向数据源提问:使用 Elasticsearch 和 Elastic Agent Builder 将代码搜索扩展到十亿行代码规模
elasticsearch
-今昭-6 小时前
AnsibleVault加密配置及zabbix部署
大数据·elasticsearch·搜索引擎
我一定会有钱7 小时前
打造完美工作流:Git 配置”一次推送,三端同步”(Gitee/GitCode/GitHub)
开发语言·windows·vscode·搜索引擎·gitlab·github·visual studio code
hzxpaipai8 小时前
杭州GEO网站建设哪家好:面向搜索引擎与AI推荐的
搜索引擎
Elastic 中国社区官方博客9 小时前
跳过有状态的 OTel Collector:Elasticsearch 9.5 原生存储两种指标时间类型
大数据·人工智能·elasticsearch·搜索引擎·重构·全文检索
PC2005-cloud1 天前
Elasticsearch 学习笔记:集群实战(3 控制节点 + 3 数据节点部署与故障转移)
笔记·学习·elasticsearch
Devin~Y1 天前
从内容社区到AI智能客服:Spring Boot + Spring Cloud + Spring AI 全栈实战面试拆解
java·spring boot·redis·elasticsearch·spring cloud·kafka·mybatis
hyf3266331 天前
低成本站群泛程序部署:单服务器托管百站稳定运行教程
运维·服务器·前端·搜索引擎·蜘蛛池
凤山老林1 天前
复杂检索引擎落地:Spring Boot + Elasticsearch 数据同步与高阶查询实战
spring boot·后端·elasticsearch
Elastic 中国社区官方博客2 天前
你的 AI agent 不需要你的 API 密钥:使用 OAuth 2.1 对 Elasticsearch MCP 服务器进行身份验证
大数据·运维·人工智能·elasticsearch·搜索引擎·全文检索