elasticsearch 学习笔记
elasticsearch 学习笔记
2017-12-22 17:14 by 男人坦荡!, … 阅读, … 评论, 收藏, 编辑
基本概念
集群和节点的概念
1.集群是由节点组成的
2.每个集群都有唯一的名字默认是elasticsearch
3.cluster.name: niubiwali //集群的名字很重要因为每个节点只是集群的一部分,所有的节点都是通过集群的名字加入集群的
4.每个节点都有自己的名字
5.每个节点都有自己的独立服务
索引
1.索引是含有相同属性的文档集合
索引: 还有相同属性的文档集合(好比一个数据库)例如:图书索引
类型:索引可以定义一个或者多个类型,文档必须属于一个类型(相当与一张表)例如 有销售类的书,技术工程类的书
文档: 文档是可以背索引的基本数据单位(相当于一条数据)例如 具体的每本书就是文档
和索引相关的有“分片”和“备份”
分片:每个索引都有多个分片,每个分片是一个Lucene索引
注:假如一个索引数据量很大,就会产生硬盘压力很大。所以就要‘分片’来分担压力。可以水平的扩展和拆分以及分布式的操作,可以提高搜索和其他操作
备份:拷贝一份分片就完成了分片的备份,注:当一个主分片失败或出现问题时,”备份分片”就可以代替工作,从而提高了ES的可用性,备份的分片还可以执行搜索的操作,来分摊搜索的压力
安装
1.安装node.js(6.3.0)
2.检测PATH环境变量是否配置了Node.js
cmd下
node –version
3.D:/www/nodejs文件夹下创建hello.js
var http = require(‘http’);
http.createServer(function (request, response) {
// 发送 HTTP 头部
// HTTP 状态值: 200 : OK
// 内容类型: text/plain
response.writeHead(200, {‘Content-Type’: ‘text/html; charset=utf-8’});
// 发送响应数据 “Hello World”
response.end(‘Hello World\n’);
}).listen(8888);
// 终端打印如下信息
console.log(‘Server running at http://127.0.0.1:8888/’);
4.启动服务
cmd下执行:
node hello.js
浏览器访问:http://localhost:8888
hello,world
安装配置
1.安装jdk
2.设置path和JAVA_HOME
3.下载:
elasticsearch下载地址:
https://www.elastic.co/downloads/elasticsearch
点zip
4.解压,进入D:\Tools\elasticsearch\elasticsearch-6.0.0
5.启动:
右键->打开dos,执行:
.\bin\elasticsearch
访问:http://localhost:9200
6.配置相应参数 启动
dos下继续执行
./bin/elasticsearch -Ecluster.name=yutao -Enode.name=yutao_node_1
不成功
7.安装elasticsearch作为window服务
在cmd中先进入安装目录中的bin目录
执行:
./elasticsearch-service.bat install
8.
./elasticsearch-service start //启动失败
./elasticsearch-service manager //打开管理控制台,但启动依然失败
分布式安装
elasticSearch 分布式安装
1.在elasticSearch下的config下elasticsearch.yml文件最后一行添加
注意 一定要加空格在:后面
cluster.name: wali //集群的名字
node.name: master //给主的master(指挥官)节点起名字
node.master: true //告诉他是master
network.host: 127.0.0.1 绑定ip
2.配置分支节
外面新建文件夹es_slave,copy2份 elasticsearch.zip到es_slave下解压
叫es_slave1和es_slave2
到es_slave1的config下的elasticsearch.yml进行配置
cluster.name: niubiwali //注意要与master的名字相同
node.name: slave1 \\节点名字
network.host: 127.0.0.1 绑定ip
http.port: 8200 //默认是9200,出现端口冲突现象
discovery.zen.ping.unicast.hosts: [“127.0.0.1”] //主要是找的master,如果不配置他是游离于集群之外的,找不到master,
保存启动服务
同样操作es_slave2但是端口配置为8000
基本用法
1.索引命名是result api 为格式的
api的基本格式为:http://<ip>:<port>/<索引>/<类型>/<文档的id>
2.常用的http动词:GET/PUT/POST/DELETE
3.下载postman 接口测试工具
4.创建索引的格式
{
“settings”:{ //关键词 settings指定索引的配置
“number_of_shards”: 3, //知道索引的分片数
“number_of_replicas”: 1 //指定备份数
},
“mappings”:{ //索引的映射编译
“man”:{ //索引名字的映射
“properties”:{ //定义属性
“name”:{
“type”:”text”
},
“country”:{
“type”:”keyword”
},
“age”:{
“type”:”integer”
},
“date”:{
“type”:”date”,
“format”:”yyyy-MM-dd HH:mm:ss || yyyy-MM-dd || epoch_millis”//指定时间格式
}
}
},
“woman”:{
}
}
}
//=================上面的只是为了介绍,下面的正确=========================
{
“settings”:{
“number_of_shards”: 3,
“number_of_replicas”: 1
},
“mappings”:{
“man”:{
“properties”:{
“name”:{
“type”: “text”
},
“country”:{
“type”: “keyword”
},
“age”:{
“type”: “integer”
},
“date”:{
“type”: “date”,
“format”: “yyyy-MM-dd HH:mm:ss || yyyy-MM-dd || epoch_millis”
}
}
}
}
}
增删改查索引
http://blog.csdn.net/liangxw1/article/details/78015663
Powershell原生支持的cURL – Invoke-WebRequest 及与 cURL的使用区别
查看:
Get-Help Invoke-WebRequest
Get-Help 在此计算机上找不到该 cmdlet 的帮助文件。它仅显示部分帮助。
— 若要下载并安装包含此 cmdlet 的模块的帮助文件,请使用 Update-Help, 以管理员身份运行。
— 若要联机查看此 cmdlet 的帮助主题,请键入: “Get-Help Invoke-WebRequest -Online” 或
转到 http://go.microsoft.com/fwlink/?LinkID=217035。
使用:
1.创建索引:
curl -XPUT ‘http://localhost:9200/twitter/’
改为:
Invoke-WebRequest http://localhost:9200/twitter/ -method put
curl -XPOST http://127.0.0.1:9200/logstash-2015.06.21/testlog -d ‘{
“date” : “1434966686000”,
“user” : “chenlin7”,
“mesg” : “first message into Elasticsearch”
}’
改为:
Invoke-WebRequest http://localhost:9200/index/type/ -method post -body ‘{“data”:”1″,”user”:”zhangsan”,”msg”:”hello,es”}’ -ContentType “application/json”
curl -XPUT ‘localhost:9200/customer/external/1?pretty’ -d ‘
{
“name”: “John Doe”
}’
改为:
Invoke-WebRequest http://localhost:9200/index/type/ -method post -body ‘{“data”:”1″,”user”:”zhangsan”,”msg”:”hello,es”}’ -ContentType “application/json”
2.修改索引:
Invoke-WebRequest http://localhost:9200/index/type/_update -method post -body ‘{“user”:”李四”}’ -ContentType “application/json”
3.搜索:
浏览器下查看:http://localhost:9200/index/_search
Invoke-WebRequest http://localhost:9200/index/type/_search
Invoke-WebRequest http://localhost:9200/index/type/_search
4.删除索引:
Invoke-WebRequest http://localhost:9200/index/type/ -method delete
http://blog.csdn.net/yinhaonefu/article/details/46715801
ES内置的REST接口
/index/_search
/_aliases 获取或操作索引的别名
/index/ 查看指定索引的详细信息
/index/type/ 创建或操作类型
/index/_mapping 创建或操作mapping
/index/_settings 创建或操作设置(number_of_shards是不可更改的)
/index/_open 打开被关闭的索引
/index/_close 关闭索引
/index/_refresh 刷新索引(使新加内容对搜索可见,不保证数据写入磁盘)
/index/_flush 刷新索引(会出发lucene提交)
express框架删除elasticsearch索引数据
express 框架删除elasticsearch索引数据
1.在elasticsearch.js文件下添加
function deleteDocument(id) {
return elasticClient.delete({
index: indexName,
type: “foods”,
id: id
});
}
exports.deleteDocument = deleteDocument;
2.在路由删除数据代码块中添加
elastic.deleteDocument(req.body.id).then(function(result) {
res.render(‘home/publish’, {
rss: rs[0]
})
})
express框架修改elasticsearch索引数据
express 框架修改elasticsearch索引数据
1.在elasticsearch.js文件下添加
function updateDocument(document) {
return elasticClient.update({
index: indexName,
type: “foods”,
id: document.id,
body: {
doc: {
name: document.name,
price: document.price,
num: document.num,
path: document.path
}
}
});
}
2.在路由修改数据代码块中添加
let goods = {};
goods.name = fields.goodsname;
goods.price = fields.goodsprice;
goods.num = fields.goodsnum;
goods.path = rs[0][0].goodspath;
goods.id = loginbean.goodsid;
elastic.updateDocument(goods).then(function(result) {
res.render(‘home/publish’, {
rss: rs[0]
})
})