Elastic Search学习——CRUD

本文介绍了分词器的工作原理及几种内置分词器的特点,包括standard、simple和Whitespace分词器。此外,还详细讲解了如何使用Elasticsearch进行索引、文档的增删改查操作。

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

**

1、 分词器的介绍,以及内置分词器

**
从一段文本中切出一条一条的词条,并对每个词条进行标准化。
1.character filter:分词之前的预处理,过滤掉HTML标签,特殊符号转换等
2.tokenizer:分词
3.token filter:标准化
内置分词器:
1.standard 分词器:(默认的)他会将词汇单元转换成小写形式,并去除停用词和标点符号,支持中文采用的方法为单字切分
2.simple 分词器:首先会通过非字母字符来分割文本信息,然后将词汇单元统一为小写形式。该分析器会去掉数字类型的字符。
3.Whitespace 分词器:仅仅是去除空格,对字符没有lowcase化,不支持中文;
并且不对生成的词汇单元进行其他的标准化处理。
4.language 分词器:特定语言的分词器,不支持中文
**2

2、使用es实现CRUD。

**
1.添加索引

	PUT /lib/
			{

  "settings":{
  
      "index":{
      
        "number_of_shards": 5,
        
        "number_of_replicas": 1
        
        }
        
      }
}
**2.查看索引信息**
	GET /lib/_setting
	GET _all/_setting
**3.添加文档**


	PUT /lib/user/1
		{
    "first_name" :  "Jane",
    
    "last_name" :   "Smith",
    
    "age" :         32,
    
    "about" :       "I like to collect rock albums",
    
    "interests":  [ "music" ]
}

说明:lib是索引,user是类型,1是文档的id

POST /lib/user/

{
    "first_name" :  "Douglas",
    
    "last_name" :   "Fir",
    
    "age" :         23,
    
    "about":        "I like to build cabinets",
    
    "interests":  [ "forestry" ]
    
}

4.查看文档
1、查看lib索引中的user类型id为1的文档内容
GET /lib/user/1
2、查看lib中的user的所有的文档内容
GET /lib/user/
3、指定属性查看文档中的数据
GET /lib/user/1?_source=age,interests

5.更新文档
1、 可以直接使用PUT直接覆盖
2、 指定内容修改

POST /lib/user/1/_update
{
		“doc”{
“age”:22
}
}

6.删除一个文档
1、 DELETE /lib/user/1
7.删除一个索引
1、 DELETE /lib
3、批量获取文档
在es中存在Multi GET API,可以通过索引名,类型,文档id一次得到一个文档集合,文档可以不是一个索引库的内容。
使用curl命令操作:
curl “服务器地址+端口号/_mget” –d {

“doc”[
{
“_index”:”lib”,
“_type”:”user”,
“_id”:”1”
},
{
“_index”:”lib”,
“_type”:”user”,
“_id”:”2”
}
]
}

在客户端工具中使用:

GET/_mget
{
		“doc”[
{
“_index”:”lib”,
“_type”:”user”,
“_id”:”1”
},
{
“_index”:”lib”,
“_type”:”user”,
“_id”:”2”
}
]
}

也可以指定字段查询,在条件中加入“_source”:”字段名”,多个字段使用[],如“_source”:[”字段名”,”….”],查询/同一个索引,类型中的文档,可把相同段提出来,如:GET /lib/user/_mget{……}.也可以直接选择id来获取文档。
GET /lib/user/_mget
{
“ids”: [“1”,“2”]
}
4、批量操作文档。
使用Bulk API 实现批量操作,bulk的格式:
{action:{metadata}}
{requstbody}

1.action:(行为)
create:文档不存在时创建,如果已经创建,再创建的时候会失败。
update:更新文档
index:创建新文档或替换已有文档
delete:删除一个文档

2.metadata:_index,_type,_id :
例如:删除一个文档
{“delete”:{“_index”:”lib”,”_type”:”user”,”_id”:”1”}}
批量操作(添加)

POST /lib2/books/_bulk
{"index":{"_id":1}}
{"title":"Java","price":55}
{"index":{"_id":2}}
{"title":"Html5","price":45}

{"index":{"_id":3}}
{"title":"Php","price":35}

{"index":{"_id":4}}
{"title":"Python","price":50}

批量获取可使用我们上面讲过的_mget

GET /lib2/books/_mget
{
"ids": ["1","2","3","4"]
}

批量删除,没有请求实体,批量操作。
POST /lib2/books/_bulk

{"delete":{"_index":"lib2","_type":"books","_id":4}}

{"create":{"_index":"tt","_type":"ttt","_id":"100"}}
{"name":"lisi"}

{"index":{"_index":"tt","_type":"ttt"}}
{"name":"zhaosi"}

{"update":{"_index":"lib2","_type":"books","_id":"4"}}
{"doc":{"price":58}}

bulk一般建议处理1000-5000个文档,大小建议为100M。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值