一、安装
官网下载压缩包,windows系统解压即可使用,运行/bin文件夹下的.bat文件就可以运行了
(会自动加载modules文件夹中的各个模块,用的配置在config文件夹中的elasticsearch.yml中比如node.name节点名字都是什么之类的)
官网:https://www.elastic.co/cn/elasticsearch/
浏览器输入http://localhost:9200/?pretty即可初步访问,pretty会让Elasticsearch美化输出(pretty-print)JSON响应以便更加容易阅读。
如本机没有java环境,自行百度一下下载现在基本都需要jdk1.8以上的版本了
二、部分概念的简要说明或翻译
1、集群(Cluster)
一个集群下有多个节点。cluster_name是集群名称,默认名称是elasticsearch,可修改
2、节点(Node)
节点可设置节点名称,不设置会相互发现,自动形成并加入一个名为 elasticsearch 的集群。
3、针对数据内容
(1)、索引(Index)
大范围,比如说索引是车
(2)、类型(Type)
type是index中的一个逻辑数据分类,比如索引是车的基础下,type是两个轮子的数据,type是四个轮子的数据,
type是两个轮子的数据可能只记录id和名称就行,
type是四个轮子的数据可能在id和名称的基础上加上一个报废时间的字段
索引(index)相当于数据库,类型(type)相当于数据表,映射(Mapping)相当于数据表的表结构。
(3)、文档和字段(Document 和 field)
比如索引是车的基础下,type是两个轮子的数据的两篇文档
{"number": "2","name": "共享单车"},{"number": "3","name": "家用自行车"}
一个{}就是一个文档,number和name就叫做field
请注意,尽管文档Document 物理上驻留在索引Index中,但文档实际上必须在索引中对类型进行分配。
4、shard(分片)
一个index下会包含多个分片来存储,(1)方便横向扩展(比如加服务器),(2)允许跨分片(可能在多个节点上)分布和并行化操作,从而提高性能/吞吐量
每个shard都是一个lucene index,可独立的去处理请求。
(截至 LUCENE-5843,限制是2,147,483,519(= Integer.MAX _ value-128)文档。您可以使用 _ cat/shards API 监视分片大小)
比如可能会把三轮车的数据放一个分片里,把自行车的数据放另外一个分片里,以后如果数据多了,方便扩展。
(1)primary shard:主分片,对应的是replica shard,replica shard备份分片的复制来源就叫做primary shard
(2)replica shard :备份分片,是primary shard的副本,负责容错,以及承担读请求负载
备份分片好处是
(1)如果分片/节点出现故障,它提供高可用性。出于这个原因,需要注意的是,复制碎片从未在复制它的原始/主碎片的同一个节点上分配(意思是不能和主分片在一个节点上)
(2)它允许您扩展搜索量/吞吐量,因为搜索可以在所有副本上并行执行
默认情况下,Elasticsearch 的每个索引分配5个主碎片和1个副本(相当于5个分片一共有一份备份),
这意味着如果集群中至少有2个节点(primary shard和replica shard不能在同一个节点上),
则索引将有5个主碎片和另外5个副本碎片(1个完整副本) ,每个索引总共有10个碎片。
三、与Elasticsearch进行初步的交互
1、运行安装后的启动文件后浏览器输入正常的一个符合规范请求就可以交互,
但是对于复杂的请求就比较难一些了,可以官网下载个Kibana压缩包,解压后运行bin\kibana.bat文件就可以使用Kibana
类似postman的效果,便于学习,后期再学习java语言与Elasticsearch的交互。
2、常用方法和官方api
https://www.elastic.co/guide/en/elasticsearch/reference/6.0/docs.html
https://www.elastic.co/guide/en/elasticsearch/reference/6.0/search.html
一看英文就脑瓜疼的伙伴可以给浏览器装个插件,右键就可以直接页面翻译,原有的英文也会保留,很方便
插件地址:https://saladict.crimx.com/download.html
常用方法:
(1)增加
PUT /index/type/id
{json文档内容}
(2)修改(替换的方式修改,增加某个id的文档,原来已经有文档了,自动就覆盖了。需要带上所有的字段,不然会报错)
PUT /index/type/id
{json文档内容}
(3)修改(可以只改某个字段)
POST /index/type/id/_update
{json文档内容}
(4)查询
GET /index/type/id
{json文档内容}
(5)删除
DELETE /index/type/id
(6)查询系统健康情况
GET /_cat/health?v
(7)几种查询方法search
- URI SEARCH
纯粹使用 URI 执行搜索请求。
GET /index/type/_search?参数=
举例:GET twitter/tweet/_search?q=user:kimchy&sort=user:desc 其它参数在官方文档中有说明 https://www.elastic.co/guide/en/elasticsearch/reference/6.0/search-uri-request.html 这种搜索方式不常用
- Query DSL(DSL:Domain Specified Language,特定领域的语言)
就是带个json的查询方法,查询条件都在json里了,查询条件多时很方便
举例查询所有数据:
GET /index/type/_search
{"query": { "match_all": {} }}
其它内容下次补充