**
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。