目录
ES 的 mapping 就是相当于 数据库字段的类型。
数据库中字段有的是 varchar , int 。同理 ES 中也需要设置。
创建索引的同时创建 mappings
put http://ip:9200/index_name
{
"mappings": {
"properties": {
"realname": {
"type": "text",
"index": true
},
"username": {
"type": "keyword",
"index": false
}
}
}
}
text: 大的长文本,需要做分词,做倒排索引
keyword: 不会被分词,也不会被做倒排索引。做精确匹配的搜索(比如订单状态,用的微信号,qq号,手机号)
text , keyword 都是属于string类型。
text: 大的长文本,需要做分词,做倒排索引
keyword: 不会被分词,也不会被做倒排索引。做精确匹配的搜索(比如订单状态,用的微信号,qq号,手机号)
text , keyword 都是属于string类型。
index:默认true,设置为false的话,那么这个字段就不会被索引
对索引内容进行分词
对现有索引 mapping 内容修改
增加 index_name 的 mapping 字段。
long,byte,float,short,integer,boolean,date,text,object(可以再放过对象进去)
post http://192.168.1.160:9200/index_name/_mapping
{
"properties": {
"id": {
"type": "long"
},
"age": {
"type": "integer"
}
}
}
文档基本操作
添加文档数据
1. 先创建好 index 2. 然后post 请求。
POST http:192.168.1.160:9200/index_name/_doc/1
/1 是这个文档的id
{
"id":1001,
"name":"jack",
"desc":"描述内容123",
"create_date":"2020-01-22"
}
删除文档数据
DELETE http:192.168.1.160:9200/index_name/_doc/1
修改文档数据
POST http:192.168.1.160:9200/index_name/_doc/1/_update
请求数据:
{
"doc":
{
"merchantId": "2757002" ,
"name":"jack"
}
}
查询文档数据
GET http:192.168.1.160:9200/index_name/_doc/1
GET http:192.168.1.160:9200/index_name/_doc/_search 查询所有
GET http:192.168.1.160:9200/index_name/_doc/1?_source=id,name 只查询除特定的字段
HEAD http:192.168.1.160:9200/index_name/_doc/1 查询这条数据是否存在。返回值为空,根据http状态码来判断。200表示存在。404 NOT FOUND 表示不存在
文档乐观锁
根据 版本号 来做判断。
每一次文档根据, 元数据 _version 都会 +1 。
“_seq_no” 也会自增
“primary_term” 表示这条数据再分片的位置
乐观锁更新,需要_seq_no 和 primary_term 与库里的数据一致,才能更新
POST http:192.168.1.160:9200/index_name/_doc/1?if_seq_no=30&if_primary_term=1
ES 内置分词器
- standard:默认分词,单词会被拆分,大小会转换为小写。
- simple:按照非字母分词。大写转为小写。
- whitespace:按照空格分词。忽略大小写。 s
- top:去除无意义单词,比如 the / a / an / is …
- keyword:不做分词。把整个文本作为一个单独的关键词