yyz notes yyz notes
首页
  • RBAC权限设计
  • 架构图标设计
  • 账号体系
  • python基础
  • python高级
  • python模块
  • python设计模式
  • python数据结构与算法
  • django
  • django-DRF
  • flask
  • 直接设计开源pip包
  • 直接设计开源项目
  • python示例题/脚本
  • python面试题
  • golang基础
  • golang高级
  • golang常用组件
  • gin框架
  • es6
  • javascript
  • react
  • vue
  • TypeScript
  • mysql
  • redis
  • minio
  • elasticsearch
  • mongodb
  • 消息队列
  • 自动化测试
  • 操作系统

    • linux
    • windows
  • nginx
  • docker
  • k8s
  • git
  • ldap
  • 学习
  • 面试
  • 心情杂货
  • 实用技巧
  • 友情链接
关于
收藏
  • 分类
  • 标签
  • 归档
GitHub (opens new window)

益章

可乐鸡翅
首页
  • RBAC权限设计
  • 架构图标设计
  • 账号体系
  • python基础
  • python高级
  • python模块
  • python设计模式
  • python数据结构与算法
  • django
  • django-DRF
  • flask
  • 直接设计开源pip包
  • 直接设计开源项目
  • python示例题/脚本
  • python面试题
  • golang基础
  • golang高级
  • golang常用组件
  • gin框架
  • es6
  • javascript
  • react
  • vue
  • TypeScript
  • mysql
  • redis
  • minio
  • elasticsearch
  • mongodb
  • 消息队列
  • 自动化测试
  • 操作系统

    • linux
    • windows
  • nginx
  • docker
  • k8s
  • git
  • ldap
  • 学习
  • 面试
  • 心情杂货
  • 实用技巧
  • 友情链接
关于
收藏
  • 分类
  • 标签
  • 归档
GitHub (opens new window)
  • MySQL

  • Redis

  • Elasticsearch

    • 01.ES安装
    • 02.es介绍
    • 03.es基本使用
    • 04.中文分词检索
      • 01.mapping映射
        • 1.1 映射是什么
        • 1.2 设置mapping
        • 1.3 添加和查询数据
      • 02.分析器
        • 2.1 分析器类型
        • 2.1.1 三方中文分词器
        • 2.2 自带分词器
        • 2.2 在mapping中指定分析
        • 2.3 添加数据
        • 2.4 whitespace空格分析器
        • 2.5 语言分析器(english)
        • 2.6 ikmaxword中文分词
    • 05.python使用ES
    • 06.ES复杂类型
    • 07.制作一些数据
  • MongoDB

  • 消息队列

  • 数据存储
  • Elasticsearch
xugaoyi
2021-02-12
目录

04.中文分词检索

# 01.mapping映射

  • 前面已经安装了ik中文分词器,这里就不介绍怎么安装了
  • ik_max_word: 会将文本做最细粒度的拆分
  • ik_smart: 会做最粗粒度的拆分

# 1.1 映射是什么

  • 映射:指定字段类型,将时间域视为时间,数字域视为数字,字符串域视为全文或精确值字符串
  • Elasticsearch 支持如下简单域类型:
    • 字符串: text string(高版本废弃)
    • 整数 : byte, short, integer, long
    • 浮点数: float, double
    • 布尔型: boolean
    • 日期: date

# 1.2 设置mapping

## 查看映射关系
GET /worker1/_mapping

## 创建映射
PUT /worker1
{
	"mappings": {
		"properties": {
			"name": {
				"type": "text"
			},
			"age": {
				"type": "long"
			},
			
		}
	}
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18

# 1.3 添加和查询数据

## 查询worker1中所有数据
GET /worker1/_search

## 不指定id在worker1中添加数据
POST /worker1/_doc
{
  "name":"tom",
  "age":18
}


## 指定id在worker1中添加数据
POST /worker1/_doc/2
{
  "name":"jack",
  "age":18
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17

# 02.分析器

# 2.1 分析器类型

# 2.1.1 三方中文分词器

  • ik_max_word:会做细粒度拆分
  • ik_smart:会做最粗粒度的拆分

# 2.2 自带分词器

  • 标准分析器(standard):标准分析器是Elasticsearch默认使用的分析器。
  • 简单分析器(simple):简单分析器在任何不是字母的地方分隔文本,将词条小写。
  • 空格分析器(whitespace):空格分析器在空格的地方划分文本。
  • 语言分析器(english):它们可以考虑指定语言的特点
    • 例如, 英语 分析器附带了一组英语无用词(常用单词,例如 and 或者 the ,它们对相关性没有多少影响),它们会被删除。
    • 由于理解英语语法的规则,这个分词器可以提取英语单词的词干 。

# 2.2 在mapping中指定分析

## 查看映射
GET /worker4/_mapping


## 创建mapping
PUT /worker
{
	"mappings": {
		"properties": {
			"name": {
				"type": "text",
				"analyzer": "whitespace"
			},
			"address": {
				"type": "text",
				"analyzer": "english"
			},
			"desc": {
				"type": "text",
				"analyzer": "ik_max_word"
			}
		}
	}
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24

# 2.3 添加数据

## 查询所有数据
GET /worker/_search

## 添加记录
POST /worker/_doc/1
{
  "name":"xiao-nai-qiang first",
  "address":"xiao-nai-qiang henan",
  "desc":"肖乃强是谁?"
}
1
2
3
4
5
6
7
8
9
10

# 2.4 whitespace空格分析器

## 查看刚刚设置的mapping映射
GET /worker/_mapping
## 查询刚创建的数据 id=1
GET /worker/_doc/1

## 因为name使用的是"whitespace"空格分析器,所以 ?q=name:xiao 无法匹配xiao-nai-qiang 这个关键字
GET /worker/_search?q=name:xiao

## 只有完整查询 ?q=name:xiao-nai-qiang 才能匹配到数据
GET /worker/_search?q=name:xiao-nai-qiang
1
2
3
4
5
6
7
8
9
10

# 2.5 语言分析器(english)

## 因为 note字段设置的是 "english" 语音分析器,所以通过 ?q=note:xiao 可以搜索到 xiao-nai-qiang
GET /worker4/_search?q=address:xiao
1
2

# 2.6 ik_max_word中文分词

## ik_max_word中文分词,可以通过 ?q=desc:肖乃强 查询到 "肖乃强是谁?"
GET /worker/_search?q=desc:肖乃强
1
2
编辑 (opens new window)
上次更新: 2023/05/17, 23:08:21
03.es基本使用
05.python使用ES

← 03.es基本使用 05.python使用ES→

最近更新
01
配置yun源
05-24
02
linux-配置python虚拟环境
05-24
03
linux文件目录管理
05-24
更多文章>
Theme by Vdoing | Copyright © 2023-2023 yizhang | MIT License
  • 跟随系统
  • 浅色模式
  • 深色模式
  • 阅读模式