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,足见其在处理大数据和高并发搜索中的卓越性能.不少其他网站也开始将 ...
随机推荐
- JS是按值传递还是按引用传递?【转载】
最近遇到个有趣的问题:“JS中的值是按值传递,还是按引用传递呢?” 在分析这个问题之前,我们需了解什么是按值传递(call by value),什么是按引用传递(call by reference). ...
- CodeForces - 706B 二分stl
#include<iostream> #include<cstdio> #include<cstring> #include<string> #incl ...
- Mac Os系统设置
显示Mac隐藏文件的命令: defaults write com.apple.finder AppleShowAllFiles -bool true 隐藏Mac隐藏文件的命令:defaults wri ...
- Dapper-继续
好久没有来博客园了,最近刚好有点时间晚上,继续完善之前的orm orm自己用的比较多的还是EF,linq写着真的是很方便,但是EF最让人头疼的地方还是每个表都需要建立mapping. 这个是相当的烦恼 ...
- php 常用 常量集合
DIRECTORY_SEPARATOR 常量 DIRECTORY_SEPARATOR 目录分割符
- 解决Webstom 2017中,输入法候选框无法显示问题
一.问题: 如题,IDE编辑界面内,输入法的候选框没法显示,有时需要打中文注释,非常麻烦. 原因:IDE自带的OpenJDK与输入法存在冲突 二.解决: (1)在编辑界面,双shift,搜索:swit ...
- 我们是80后 golang入坑系统
现在这个系列,已经开始两极分化了. 点赞的认为风格轻松,看着不困.反之,就有人嫌写的罗里吧嗦,上纲上线.所以善意提醒,里面不只是技术语言,还有段子.专心看技术的,千万别点!别怪我没提醒!差点忘说,版权 ...
- 如何实现MDI窗体不重复打开同一个子窗体?
使用MDI窗体时,默认是可以多次打开同一个子窗体的,那么如何控制不重复打开同一个子窗体呢?MDI窗体有个重要属性——MdiChildren,该属性表示MDI窗体打开的子窗体的数组,循环遍历该数组,可以 ...
- jquery总结(来自于一个讲师的总结)
选择器 基本选择器:id class 标签 eq()查找具体的列表中的元素:$('ul li:eq(n)').eq(n) 层 :div p,div>p 查找:find 选中元素中再查找子元素,p ...
- python学习笔记 map&&reduce
---恢复内容开始--- 1.map 1)map其实相当对吧运算符进行一个抽象,返回的是一个对象,但是这里不知道为什么不可以对一个map返回变量打印两次,难道是因为回收了? def f(x): ret ...