ElasticSearch系列一 基础知识

基础知识

elasticSearch是什么

elasticSearch基与lucece构建的 分布式的 RESTFUL接口的全文搜索引擎.
天生的分布式:它知道如何管理节点来完成扩展和高可用.所以水平扩展很方便
只需要加一台机器稍做配置即可.

lucene的倒排索引

关键字 文章号[出现的频率] 出现的位置
中国 1[2] 2,4
5[3] 1,5,9

杭州 3[5] 2,6,8,9,12
lucene分别将上面的三列数据放到3个文件中分别是 词典文件 频率文件 位置文件
词典文件中的每个关键字都保留了指向词频文件和位置文件的指针,可以通过关键字直接找到
她的词频和位置.

压缩算法

为了减少索引的空间Lucene采用了压缩算法 中国人 被分词成 中国 中国人
中国->2 中国人->2人

索引词

拆分后的关键字(不可以在拆分的) 搜索的精度值
可以通过trem查询精准的搜索

文本

文本是一段普通的非结构化的文字,被分词成多个索引词 放在es的索引中,可以通过单个的索引词
找到对应的文本.

路由

当存储文档的时候,该文档只会存在唯一的一个主分片中,具体在哪个主分片是根据文档的id根据散列值进行分配的

分片

分片是单个lucene实例,这是es比较底层的功能,索引其实是指向主分片和副本分片的逻辑空间. 逻辑上数 据存在索引中
物理上数据存在单个lucene的实例中.开发使用的时候我们只关注索引就可以了elasticSearch会自动的管理分片,故障的
转移,数据的复制. 主分片挂掉副本分片会代理主分片. 一个索引默认有5个主分片(可以修改配置文件改变默认的个数).
事先预制主分片的数量,主分片的数量一旦确定就不能被改变.每个主分片可以有零个或者多个副本分片,从而保证的集群的
高可用,副本分片的数量是可以改变的.

索引 index

具有相同结构的文档集合,可以理解成mysql中的表,和表不同的地方是mysql一个表中只可以存放一种数据类型,index中可以有多个
type(一般推荐一个index对应一个type).索引的名称应该全部小写

类型 type

类型是索引的逻辑分区,索引是类型的容器.

文档 document

文档就是存在es中的一个json格式的字符串,就像mysql中的一条记录,有值也有类型 文档也有field 和 对应的类型的
josn的格式是键值对{“name”:“zhangsan”,“age”:21}
也可以是数组格式的{“name”:[“张三”,“李四”,“王五”]}

映射 mapping

映射是对文档的每个字段类型的定义,可以提前预定义,存储文档的时候回按照预定的类型来存储,如果不提前预定义也是可以的
es在存的时候回自动的识别每个字段的类型.即使预定义了字段的类型,当后期有数据结构改变,有新的字段产生了,新的字段可以不用
自定,es也会自动的识别,这一点跟mongdb很像,这也是非关系型数据库比关系型数据库的一个优点

ID

Id是文档存储的唯一标识,可以自己定义,如果自己不定义在存储的时候es会自动的生产一个ID(推荐使用es自动生成的ID插入的性能高)
/index/type/id

端口号

9200作为Http协议,主要用于外部通讯
9300作为Tcp协议,jar之间就是通过tcp协议通讯
ES集群之间是通过9300进行通讯
一般开发人员连接es属于外部的通讯 建议使用9200端口号更为安全

索引的管理

创建索引

可以用postman来发送请求 restful 风格的

PUT 10.10.50.220:9200/test
{
	"settings":{
		"index":{
			"number_of_shards":3,
			"number_of_replicas":1
		}
	}
}

查看创建的结果

GET 10.10.50.220:9200/test
{
    "test": {
        "aliases": {},
        "mappings": {},
        "settings": {
            "index": {
                "creation_date": "1586254233231",
                "number_of_shards": "3",
                "number_of_replicas": "1",
                "uuid": "YnyvLf-6QAmcJaJWfrUhOw",
                "version": {
                    "created": "6030299"
                },
                "provided_name": "test"
            }
        }
    }
}

修改索引

PUT 10.10.50.220:9200/test/_settings

{
	"settings":{
		"index":{
			"number_of_replicas":2
		}
	}
}

删除索引

DELETE
10.10.50.220:9200/test

返回
{
    "acknowledged": true
}

索引的别名

索引的别名类似于mysql中的视图,可以理解为一种映射的关系

PUT 10.10.50.220:9200/_aliases
{
	"actions":{
		"add":{
			"index":"test","alias":"testAlias"
		}
	}
}

删除别名
{
	"actions":{
		"remove":{
			"index":"test","alias":"testAlias"
		}
	}
}
给多个索引取同样的别名,当我们查询这个别名的时候就会查询到多个索引的内容
{
	"actions":{
		"add":{
			"indices":["test","test1"],"alias":"testAlias"
		}
	}
}


获取配置

GET 10.10.50.220:9200/test/_settings

查看分词

POST 10.10.50.220:9200/_analyze

{
“analyzer”: “standard”,
“text”:“this is a test”
}

查看索引的状态

GET meadin/_stats
状态包含的信息很多 总数 被删掉的数量 占用的磁盘大小…

索引的冲洗

POST 10.10.50.220:9200/test/_flush
可以冲洗一个或多个索引,冲洗的作用是将数据保存到索引存储中并清除内部的事物日志,这么做是为了释放内存空间
es默认是内存启发式算法来自动触发冲洗

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值