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,足见其在处理大数据和高并发搜索中的卓越性能.不少其他网站也开始将 ...
随机推荐
- ASP.NET Core的身份认证框架IdentityServer4(1)-特性一览
IdentityServer4是ASP.NET Core的一个包含OpenID和OAuth 2.0协议的框架.OpenID和OAuth 的区别请看 https://www.zhihu.com/ques ...
- 在ssm框架中前后台数据交互均使用json格式
前后台数据交互均使用json. 框架ssm(spring+springmvc+mybatis) @RequestBody注解实现接收http请求的json数据,将json数据转换为java对象,注解加 ...
- 逆向课程第二讲,寻找main入口点
逆向课程第二讲,寻找main入口点 一丶识别各个程序的入口点 入门知识,识别各个应用程序的入口点 (举例识别VC 编译器生成,以及VS编译生成的Debug版本以及Release版本) 1.识别VC6. ...
- strict 严格模式
严格模式可以让你更早的发现错误,因为那些容易让程序出错的地方会被找出来 打开严格模式:"use strict" 不支持的javascript引擎会忽略它,当作是一个未赋值字符串 ...
- 使用Docker运行Microsoft SQL Server 2017
最近每天都在空闲时间努力编写Apworks框架的案例代码WeText.在文本发布和处理微服务中,我打算使用微软的SQL Server for Linux来做演示,于是也就在自己的docker-comp ...
- 强大又简单的响应式框架——Foundation 网格系统
前端框架——Foundation 简介 Foundation 用于开发响应式的 HTML, CSS and JavaScript 框架. Foundation 是一个易用.强大而且 ...
- 分页查询时,使用cookie保存上次的查询条件。jQuery实现方法以及中间遇到的坑
今天做分页查询时需要在跳转页面时保存上次查询的条件,如下: 实现的大致思路就是用cookie本地保存. 其中需要用到jQuery.Cookie插件. 使用方法很简单: 存数据:$.cookie(“ke ...
- [Redis源码阅读]sds字符串实现
初衷 从开始工作就开始使用Redis,也有一段时间了,但都只是停留在使用阶段,没有往更深的角度探索,每次想读源码都止步在阅读书籍上,因为看完书很快又忘了,这次逼自己先读代码.因为个人觉得写作需要阅读文 ...
- Datatable转换为Json
/// <summary> /// Datatable转换为Json /// </summary> /// <param name="table"&g ...
- IE6常见CSS解析Bug及hack
IE6常见CSS兼容问题总结 1)图片间隙 A)div中的图片间隙(该bug出现在IE6及更低版本中) 描述:在div中插入图片时,图片会将div下方撑大三像素. hack1:将</div> ...