这个是底层自带的不属于ik分词,ik分词器属于第三方分词器
POST _analyze
{"analyzer":"standard","text":"我爱学搜索引擎"
}
效果(把每一个字都拆分,每个字都被分词了)
{"tokens" : [{"token" : "我","start_offset" : 0,"end_offset" : 1,"type" : "","position" : 0},{"token" : "爱","start_offset" : 1,"end_offset" : 2,"type" : "","position" : 1},{"token" : "学","start_offset" : 2,"end_offset" : 3,"type" : "","position" : 2},{"token" : "搜","start_offset" : 3,"end_offset" : 4,"type" : "","position" : 3},{"token" : "索","start_offset" : 4,"end_offset" : 5,"type" : "","position" : 4},{"token" : "引","start_offset" : 5,"end_offset" : 6,"type" : "","position" : 5},{"token" : "擎","start_offset" : 6,"end_offset" : 7,"type" : "","position" : 6}]
}
和单字分词器的区别,就是按照比较粗的粒度去分词,把搜索引擎当成一个词来分词
POST _analyze
{"analyzer":"ik_smart","text":"我爱学搜索引擎"
}
效果
{"tokens" : [{"token" : "我","start_offset" : 0,"end_offset" : 1,"type" : "CN_CHAR","position" : 0},{"token" : "爱","start_offset" : 1,"end_offset" : 2,"type" : "CN_CHAR","position" : 1},{"token" : "学","start_offset" : 2,"end_offset" : 3,"type" : "CN_CHAR","position" : 2},{"token" : "搜索引擎","start_offset" : 3,"end_offset" : 7,"type" : "CN_WORD","position" : 3}]
}
按照最细粒度进行分词,把认为能组成一个词的情况都拆分。
POST _analyze
{"analyzer":"ik_max_word","text":"我爱学搜索引擎"
}
效果
{"tokens" : [{"token" : "我","start_offset" : 0,"end_offset" : 1,"type" : "CN_CHAR","position" : 0},{"token" : "爱","start_offset" : 1,"end_offset" : 2,"type" : "CN_CHAR","position" : 1},{"token" : "学","start_offset" : 2,"end_offset" : 3,"type" : "CN_CHAR","position" : 2},{"token" : "搜索引擎","start_offset" : 3,"end_offset" : 7,"type" : "CN_WORD","position" : 3},{"token" : "搜索","start_offset" : 3,"end_offset" : 5,"type" : "CN_WORD","position" : 4},{"token" : "索引","start_offset" : 4,"end_offset" : 6,"type" : "CN_WORD","position" : 5},{"token" : "引擎","start_offset" : 5,"end_offset" : 7,"type" : "CN_WORD","position" : 6}]
}
创建一个索引(mysql中对应database),名为test_index_database
指定默认分词器为:ik_max_word
PUT /test_index_database
{"settings":{"index":{"analysis.analyzer.default.type":"ik_max_word"}}
}
在7.x版本以后类型默认为_doc
es是面向文档的,它可以储存整个对象或者文档,对该文档进行索引、搜索、排序、过滤。
使用json作为文档序列化格式
PUT /test_index01
GET /test_index01
查询信息如下
其中number_of_shards(分片数量)
number_of_replicas(副本数量)
es7.6.1版本默认的分片和副本数量为1,这个默认数量和你es的版本有关系。可能其他版本默认不是1
{"test_index01" : {"aliases" : { },"mappings" : { },"settings" : {"index" : {"creation_date" : "1678969193239","number_of_shards" : "1","number_of_replicas" : "1","uuid" : "n6tD0dyxTB2aOQjqyDK0QQ","version" : {"created" : "7060199"},"provided_name" : "test_index01"}}}
}
DELETE /test_index01
格式: PUT /索引名称/类型/id
PUT /test_index01/_doc/1
{
"name": "张三",
"sex": 1,
"age": 25,
"address": "北京",
"remark": "java"
}
执行结果
_index
:索引名称
_type
:类型
_id
:id
_version
:版本(因为这条数据可能会被修改,所以版本可能不是1)
result
:结果(操作结果,创建,更新等)
{"_index" : "test_index01","_type" : "_doc","_id" : "1","_version" : 1,"result" : "created","_shards" : {"total" : 2,"successful" : 1,"failed" : 0},"_seq_no" : 0,"_primary_term" : 1
}
查询格式:GET /索引名称/类型/id
GET /test_index01/_doc/1
查询结果
{"_index" : "test_index01","_type" : "_doc","_id" : "1","_version" : 1,"_seq_no" : 0,"_primary_term" : 1,"found" : true,"_source" : {"name" : "张三","sex" : 1,"age" : 25,"address" : "北京","remark" : "java"}
}
格式: GET /索引名称/类型/_search
GET /test_index01/_doc/_search
相当于mysql中的 select *
结果(我这里只有一条数据)
#! Deprecation: [types removal] Specifying types in search requests is deprecated.
{"took" : 1,"timed_out" : false,"_shards" : {"total" : 1,"successful" : 1,"skipped" : 0,"failed" : 0},"hits" : {"total" : {"value" : 1,"relation" : "eq"},"max_score" : 1.0,"hits" : [{"_index" : "test_index01","_type" : "_doc","_id" : "1","_score" : 1.0,"_source" : {"name" : "秀儿","sex" : 1,"age" : 25,"address" : "上海","remark" : "java"}}]}
}
格式: GET /索引名称/类型/_search?q=:**
GET /test_index01/_doc/_search?q=age:25
格式: GET /索引名称/类型/_search?q=***[left TO tight]
GET /test_index01/_doc/_search?q=age[25 TO 26]
格式: GET /索引名称/类型/_mget
GET /test_index01/_doc/_mget
{
"ids":["1","2"]
}
GET /索引名称/类型/_search?from=0&size=1
GET /索引名称/类型/_search?q=条件&from=0&size=1
GET /test_index01/_doc/_search?from=0&size=1
GET /test_index01/_doc/_search?q=age[25 TO 26]&from=0&size=1
GET /索引名称/类型/_search?_source=字段,字段
GET /test_index01/_doc/_search?_source=name,age
GET /索引名称/类型/_search?sort=字段 desc
GET /test_index01/_doc/_search?sort=age:desc
GET /test_index01/_doc/_search?sort=age:asc
格式:PUT /索引名称/类型/id
PUT /test_index01/_doc/1
{
"name": "秀儿",
"sex": 1,
"age": 25,
"address": "上海",
"remark": "java"
}
结果
{"_index" : "test_index01","_type" : "_doc","_id" : "1","_version" : 2,"result" : "updated","_shards" : {"total" : 2,"successful" : 1,"failed" : 0},"_seq_no" : 1,"_primary_term" : 1
}
格式: DELETE /索引名称/类型/id
DELETE /test_index01/_doc/1
结果
{"_index" : "test_index01","_type" : "_doc","_id" : "1","_version" : 3,"result" : "deleted","_shards" : {"total" : 2,"successful" : 1,"failed" : 0},"_seq_no" : 2,"_primary_term" : 1
}
post和put都能实现创建和更新操作
①PUT:
(1)需要对一个具体的资源进行操作,所以必须要有id才能更新和创建操作。没有就会执行失败
(2)只会将json数据全都进行替换
(3)与delete都是幂等操作,无论操作多少次结果都一样
②POST:
(1)针对整个资源集合进行操作,如果不写id就会由es生成一个唯一的id进行创建文档,如果指定id则会对应创建或者更新文档。
(2)只会更新相同字段的值
上一篇:Linux-用户以及用户组讲解