ElasticSerach
# IK分词器
下载解压到plugins
目录下即可,两种主要分词模式:ik_smart
最少切分,ik_max_word
最细切分
// 测试分词器的分词效果
POST /_analyze
{
"text": "可以用这句话来测试ik分词器的分词效果",
"analyzer": "ik_smart"
}
可以通过修改config/IKAnalyzer.cfg.xml
配置文件,指定本地词库和网络词库,用于分词和屏蔽词
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE properties SYSTEM "http://java.sun.com/dtd/properties.dtd">
<properties>
<comment>IK Analyzer 扩展配置</comment>
<!--用户可以在这里配置自己的扩展字典 -->
<entry key="ext_dict">ext.dic</entry>
<!--用户可以在这里配置自己的扩展停止词字典-->
<entry key="ext_stopwords">stopwords.dic</entry>
<!--用户可以在这里配置远程扩展字典 -->
<!-- <entry key="remote_ext_dict">words_location</entry> -->
<!--用户可以在这里配置远程扩展停止词字典-->
<!-- <entry key="remote_ext_stopwords">words_location</entry> -->
</properties>
# 基础概念
Mapping
- type:指定字段的数据类型
- 字符串类型:text 可拆分的文本,keyword 精确值
- 数值类型:long,integer,short,byte,double,float
- 布尔类型:boolean
- 日期类型:date
- 对象类型:object
- 地理坐标:geo_point 点坐标,geo_shape 区域坐标
- index:是否创建倒排索引,查询排序过滤都会依赖倒排索引,默认为 true
- analyzer:使用哪种分词器,适用于 text 可拆分文本类型,默认 standard
- properties:当类型为 object 对象时,可以用该属性配置有哪些子字段
- copy_to:复合搜索,同时搜索多个字段,需要在多个字段中配置 copy_to 然后指定名称,最后单独配置名称
# 操作索引库
索引库操作 index
// 新增索引库
PUT /heima
{
"mappings": {
"properties": {
"info": { "type": "text", "analyzer": "ik_smart" },
"email": { "type": "keyword" },
"name": {
"type": "object",
"properties": {
"firstName": { "type": "keyword" },
"lastName": { "type": "keyword" }
}
}
}
}
}
// 删除索引库
DELETE /heima
// 修改索引库(索引库不允许修改,只能增加映射字段)
PUT /heima/_mapping
{
"properties": {
"key": { ... }
}
}
// 查看索引库
GET /heima
文档操作 document
// 新增文档,强烈建议带上id,不带id会自动生成
POST /heima/_doc/1
{
"info": "黑马程序员高级讲师",
"email": "zy@itcast.cn",
"name": {
"firstName": "赵",
"lastName": "云",
}
}
// 删除文档
DELETE /heima/_doc/1
// 修改文档 全量更新,先删除原文档在重新插入新文档,没有文档会执行插入操作
PUT /heima/_doc/1
{
"info": "黑马程序员高级讲师",
"email": "zy@itcast.cn",
"name": {
"firstName": "赵",
"lastName": "云",
}
}
// 修改文档 局部更新,更新文档中某个字段
POST /heima/_update/1
{
"email": "zy@itcast.cn"
}
// 查看文档
GET /heima/_doc/1
上次更新: 2024-06-19, 23:33:40