elasticsearch 学习笔记
基本概念
集群和节点的概念
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]
})
})
elasticsearch 学习笔记的更多相关文章
- Elasticsearch学习笔记一
Elasticsearch Elasticsearch(以下简称ES)是一款Java语言开发的基于Lucene的高效全文搜索引擎.它提供了一个分布式多用户能力的基于RESTful web接口的全文搜索 ...
- elasticsearch学习笔记——相关插件和使用场景
logstash-input-jdbc学习 ES(elasticsearch缩写)的一大优点就是开源,插件众多.所以扩展起来非常的方便,这也造成了它的生态系统越来越强大.这种开源分享的思想真是与天朝格 ...
- ElasticSearch学习笔记(超详细)
文章目录 初识ElasticSearch 什么是ElasticSearch ElasticSearch特点 ElasticSearch用途 ElasticSearch底层实现 ElasticSearc ...
- 【原】无脑操作:ElasticSearch学习笔记(01)
开篇来自于经典的“保安的哲学三问”(你是谁,在哪儿,要干嘛) 问题一.ElasticSearch是什么?有什么用处? 答:截至2018年12月28日,从ElasticSearch官网(https:// ...
- ElasticSearch学习笔记-01 简介、安装、配置与核心概念
一.简介 ElasticSearch是一个基于Lucene构建的开源,分布式,RESTful搜索引擎.设计用于云计算中,能够达到实时搜索,稳定,可靠,快速,安装使用方便.支持通过HTTP使用JSON进 ...
- Elasticsearch学习笔记
Why Elasticsearch? 由于需要提升项目的搜索质量,最近研究了一下Elasticsearch,一款非常优秀的分布式搜索程序.最开始的一些笔记放到github,这里只是归纳总结一下. 首先 ...
- Elasticsearch学习笔记 一
本文版权归博客园和作者吴双本人共同所有 转载和爬虫请注明原文地址 www.cnblogs.com/tdws. 本文参考和学习资料 <ES权威指南> 一.基本概念 存储数据到ES中的行为叫做 ...
- 2018/2/13 ElasticSearch学习笔记三 自动映射以及创建自动映射模版,ElasticSearch聚合查询
终于把这些命令全敲了一遍,话说ELK技术栈L和K我今天花了一下午全部搞定,学完后还都是花式玩那种...E却学了四天(当然主要是因为之前上班一直没时间学,还有安装服务时出现的各种error真是让我扎心了 ...
- 2018/2/11 ELK技术栈之ElasticSearch学习笔记二
终于有时间记录一下最近学习的知识了,其实除了写下的这些还有很多很多,但懒得一一写下了: ElasticSearch添加修改删除原理:ElasticSearch的倒排索引和文档一旦生成就不允许修改(其实 ...
- elasticsearch学习笔记——安装,初步使用
前言 久仰elasticsearch大名,近年来,fackbook,baidu等大型网站的搜索功能均开始采用elasticsearch,足见其在处理大数据和高并发搜索中的卓越性能.不少其他网站也开始将 ...
随机推荐
- 不怕你配置不对,就怕你看的资料不对!MIM 与 SharePoint 同步完全配置指南。
为了更好的同步 User Profile,在 SharePoint 2010 中首次引入了 FIM (ForeFront Identity Manager) 用于编辑 User Profile 的同期 ...
- Node.js Stream(流)
Stream 是一个抽象接口,Node 中有很多对象实现了这个接口.例如,对http 服务器发起请求的request 对象就是一个 Stream,还有stdout(标准输出). Node.js,Str ...
- BOM对象
每一个frames都有自己的window对象,也就是每个frames都有自己的全局对象,它们之前是相互独立的,包括各自独立的本地对象,top.Object !== top.frames[0].Obje ...
- Cache 和 Buffer 都是缓存,主要区别是什么?
存储器的高速缓冲存储器存储了频繁访问的RAM位置的内容及这些数据项的存储地址.当处理器引用存储器中的某地址时,高速缓冲存储器便检查是否存有该地址.如果存有该地址,则将数据返回处理器;如果没有保存该地址 ...
- Unit Of Work之我见
本人以前写程序都是瞎写,根本没有啥模式也没有啥方法. 近一年来学习了传智的一些课程,感觉马伦老师很有才,很强大,所以学来了一个模式(应当叫模式吧,该我也不知道叫啥哈). 就是在DAL层封装一个DbSe ...
- linux kernel态下使用NEON对算法进行加速
ARM处理器从cortex系列开始集成NEON处理单元,该单元可以简单理解为协处理器,专门为矩阵运算等算法设计,特别适用于图像.视频.音频处理等场景,应用也很广泛. 本文先对NEON处理单元进行简要介 ...
- 高性能分布式执行框架——Ray
Ray是UC Berkeley AMP实验室新推出的高性能分布式执行框架,它使用了和传统分布式计算系统不一样的架构和对分布式计算的抽象方式,具有比Spark更优异的计算性能. Ray目前还处于实验室阶 ...
- 基于FPGA的有限状态机浅析
前言:状态机大法好,状态机几乎可以实现一切时序逻辑电路. 有限状态机(Finite State Machine, FSM),根据状态机的输出是否与输入有关,可分为Moore型状态机和Mealy型状态机 ...
- 自理一遍android 高级知识
之后按目录得复习巩固 目录: 客卓高级知识整理 1 移动架构 1.1 素养与基础 1.1.1 主流设计模式 创建型 行为型 结构型 1.1.2 UML 1.1.3 设计原则 1.1.4 AOP架构 1 ...
- fetch知识点汇总
使用XHR发送一个json请求一般是这样: const xhr = new XMLHttpRequest() xhr.open('Get', url) xhr.responseType = 'json ...