Elasticsearch基本概念
Elasticsearch是基于Lucene的全文检索库,本质也是存储数据,很多概念与传统关系型数据库类似。
传统关系型数据库与Elasticsearch进行概念对比
Elasticsearch | 传统关系型数据库 |
---|---|
indices(索引库) | Databases(数据库) |
type(类型) | Table(数据表) |
Document(文档) | Row(行) |
Field(字段) | Columns(列) |
mappings(映射配置) | 表结构 |
具体说明
概念 | 具体说明 |
---|---|
indices(索引库) | indices是index的复数,代表许多的索引 |
type(类型) | 类型是模拟传统关系型数据库中的table概念,一个索引库下可以有不同类型的索引,比如商品索引,订单索引,其数据格式不同。不过这会导致索引库混乱,因此未来版本中会移除这个概念 |
Document(文档) | 存入索引库原始的数据。比如每一条商品信息,就是一个文档 |
Field(字段) | 文档中的属性 |
mappings(映射配置) | 字段的数据类型、属性、是否索引、是否存储等特性 |
索引集(Indices,index的复数) | 逻辑上的完整索引 |
分片(shard) | 数据拆分后的各个部分 |
副本(replica) | 每个分片的复制 |
注:Elasticsearch本身就是分布式的,因此即便你只有一个节点,Elasticsearch默认也会对你的数据进行分片(默认5个分片)和副本操作,当你向集群添加新数据时,数据也会在新加入的节点中进行平衡。
安装Elasticsearch和ik分词器
-
Elasticsearch下载地址:Elasticsearch官网
-
ik分词器下载:elasticsearch-analysis-ik
安装前需要配置JAVA环境
Mac
安装Elasticsearch
homebrew安装
brew install elasticsearch
运行
- 查看状态
\$ brew services list
- 启动
\$ brew services start elasticsearch
- 重启
\$ brew services restart elasticsearch
- 停止
\$ brew services stop elasticsearch
浏览器输入 http://localhost:9200 查看ES是否运行
你也可以打开终端,执行以下操作:
最终的响应结果和下面类似:
{
"name": "pYaFJhZ",
"cluster_name": "docker-cluster",
"cluster_uuid": "oC28y-cNQduGItC7qq5W8w",
"version": {
"number": "6.8.2",
"build_flavor": "oss",
"build_type": "tar",
"build_hash": "b506955",
"build_date": "2019-07-24T15:24:41.545295Z",
"build_snapshot": false,
"lucene_version": "7.7.0",
"minimum_wire_compatibility_version": "5.6.0",
"minimum_index_compatibility_version": "5.0.0"
},
"tagline": "You Know, for Search"
}
安装ik分词器
终端下安装:
\$ cd /usr/local/Cellar/elasticsearch/ES版本
\$ bin/elasticsearch-plugin install https://github.com/medcl/elasticsearch-analysis-ik/releases/download/v6.8.2/elasticsearch-analysis-ik-6.8.2.zip
install后边的地址为ES对应版本的ik分词器的下载地址
Windows
安装Elasticsearch
下载安装包,解压,然后双击执行 bin/elasticsearch.bat进行安装。
运行
命令提示符
elasticsearch.bat -d
或者直接双击执行elasticsearch.bat
浏览器输入 http://localhost:9200 查看ES是否运行。
或者下载cURL(点此下载),使用cURL的方式验证:
安装ik分词器
命令提示符下安装:
\bin\elasticsearch-plugin.bat install https://github.com/medcl/elasticsearch-analysis-ik/releases/download/v6.8.2/elasticsearch-analysis-ik-6.8.2.zip
注:
- 安装完ik分词器之后需要重启ES
- Elasticsearch版本和elasticsearch-analysis-ik需要一一对应!
Elasticsearch配置文件elasticsearch.yml
配置参数 | 介绍 |
---|---|
cluster.name | 集群名称,默认是elasticsearch |
node.name | 节点名,称默认从elasticsearch-2.4.3/lib/elasticsearch-2.4.3.jar!config/names.txt中随机选择一个名称 |
path.data | 指定es的数据存储目录,默认存储在es_home/data目录下 |
path.logs | 指定es的日志存储目录,默认存储在es_home/logs目录下 |
bootstrap.memory_lock | 锁定物理内存地址,防止elasticsearch内存被交换出去,也就是避免es使用swap交换分区 |
network.host | 为es设置ip绑定,默认是127.0.0.1,也就是默认只能通过127.0.0.1 或者localhost才能访问 |
http.port | 为es设置自定义端口,默认是9200(在同一个服务器中启动多个es节点的话,默认监听的端口号会自动加1:例如:9200,9201,9202...) |
discovery.zen.ping.unicast.hosts | 当启动新节点时,通过这个ip列表进行节点发现,组建集群默认节点列表: ["127.0.0.1", "[::1]"] 127.0.0.1:表示ipv4的回环地址。 [::1]:表示ipv6的回环地址 |
discovery.zen.minimum_master_nodes | 通过配置这个参数来防止集群脑裂现象 (集群总节点数量/2)+1 |
gateway.recover_after_nodes | 一个集群中的N个节点启动后,才允许进行数据恢复处理,默认是1 |
action.destructive_requires_name | 设置是否可以通过正则或者_all删除或者关闭索引库,默认true表示必须需要显式指定索引库名称 |
通过Restful API操作Elasticsearch
参考: