点击左侧的这个小图标即可开始
node节点:单个的Elaticsearch服务器
index索引:相当于关系型数据库中的数据库,注意索引名称小写
document文档:索引中的单条记录称为文档,文档使用的是JSON格式表示
type类型:虚拟的逻辑分组,用于过滤文档,相当于MySQL中的表,不同的是type中只能存储一种数据
文档元数据:文档元数据为 _index, _type,_id,三者用于表示一个文档,index表示文档存放,type表示文档对象类型, id为文档的唯一标识
GET:以 GET 方式进行请求,一般用于数据查询。
POST:以 POST 方式进行请求,一般用于查询数据、有时也用作新增数据和修改数据。
PUT:以 PUT 方式进行请求,一般用于添加数据、修改数据。
DELETE:以 DELETE 方式进行请求,一般用于删除数据。
添加索引
PUT /test1
{
"settings": {
"number_of_shards": 3, "number_of_replicas": 2
},
"mappings": {
"properties": {
"name":{
"type":"text"
}
}
}
}
索引的名称为test1
number_of_shards:数据拆分后的各个部分,可以部署在多台服务器上,分片的数量为3,分片的数量一旦确定了就不能修改
number_of_replicas: 每个分片的复制,保存的数据一样,类似集群
要注意的是:Elasticsearch本身就是分布式的,因此即便你只有一个节点,Elasticsearch默认也会对你的数据进行分片和副本操作,当你向集群添加新数据时,数据也会在新加入的节点中进行平衡。
点击右侧开始图标
右侧出现如下则创建成功
查看某个索引
GET /test1
查看所有索引(在最下面可以找到我们新创建的索引)
GET *
删除某个索引
DELETE test1
进行文档操作(就是插入一条一条的数据)
新增
POST /test1/_doc
{
"name":"hh"
}
新增后会出现一个id
复制这个id进行查询
查看新增的
GET /test1/_doc/6SpS83EBLtX7E7BaZOxv
修改新增的
PUT /test1/_doc/6SpS83EBLtX7E7BaZOxv
{
"name":"bb"
}
修改后再进行查询发现已经发现改变
删除
DELETE /test1/_doc/6SpS83EBLtX7E7BaZOxv
查询所有(默认只会查10,如果想要多个就得用from和size)
GET /test1/_search
接下来先新增多个值:a,aa,你是aa,小米手机,小米电视…
使用match进行查询
match 用于匹配度查询(对条件值的每个汉字都拆分进行匹配,对英文字母不拆分)
GET /test1/_search
{
"query": {
"match": {
"name": "a"
}
}
}
当我们查a的时候
值出现了,继续查询aa
发现与aa相关的都出现了,所以这里可以看出不对英文字母进行拆分并且是精准匹配英文字母和带它的值,接下来测试汉字
查询米
与米相关的值都出现了,继续查询小米电视
结果依然相同
term
查询字母的时候精准查询,但查询汉字的时候就不是精准查询
term 精准查询(elasticsearch里默认的IK分词器是会将每一个中文都进行了分词的分割,所以你直接想查一整个词,或者一整句话是无返回结果的。)
GET /test1/_search
{
"query": {
"term": {
"name": "a"
}
}
}
继续查询a
结果为只带a单个字母的,查询aa
带aa的都出来了,查询米
带米的都出来了,精准查询小米电视
terms:多词条
GET /test1/_search
{
"query": {
"terms": {
"name": [
"小"
]
}
}
}
查询结果为:
增加一个新的查询条件米
GET /test1/_search
{
"query": {
"terms": {
"name": [
"小",
"米"
]
}
}
结果:
range 对比大小 “gte”表示”大于等于”、”lte”表示“小于等于”
GET /test1/_search
{
"query": {
"range": {
"price": {
"gte": 2,
"lte": 1000
}
}
}
}
这里我增加一个新字段price,并添加许多值,查询结果为:
多个条件查询
must:文档必须匹配这些条件才能被包含进来。
must_not:文档必须不匹配这些条件才能被包含进来。
should:如果文档满足 should 内的条件,将为该文档增加_score,否则,无任何影响
GET /test1/_search
{
"query": {
"bool": {
"must_not": [
{
"match": {
"name": "米"
}
}
]
}
}
}
不包含米的:
改为包含米的:
GET /test1/_search
{
"query": {
"bool": {
"must": [
{
"match": {
"name": "米"
}
}
]
}
}
}
结果:
使用from和size命令分页
GET /test1/_search
{
"from": 0,
"size": 2
, "query": {
"bool": {
"must": [
{
"match": {
"name": "米"
}
}
]
}
}
}
结果: