ES 的基本用法
ES的基本用法
ES的基本概念
1> 集群和节点
一个es集群是由一个或多和es节点组成的集合

每一个集群都有一个名字, 如之前的wali
每个节点都有自己的名字, 如之前的master, slave1, slave2
节点是可以存储数据, 参与索引数据等的独立服务
2> 索引(类似于数据库里面的database)
索引是含有相同属性的文档集合
索引在es中是通过一个名字来识别的, 必须是英文字母小写, 且不含中划线
3> 类型(相当于sql中的table)
一个索引可以定义一个或多个类型, 文档必须属于一个类型
4> 文档(相当于sql中的一行记录)
文档是可以被索引的基本数据单位
5> 分片
每个索引都有多个分片, 每个分片都是一个luncene索引
分片的好处: 分摊索引的搜索压力, 分片还支持水平的拓展和拆分以及分布式的操作, 可以提高搜索和其他处理的效率
6> 备份
拷贝一个分片就完成了分片的备份
备份的好处: 当主分片失败或者挂掉, 备份就可以代替分片进行操作, 进而提高了es的可用性, 备份的分片还可以进行搜索操作, 以分摊搜索的压力.
ES在创建索引时, 默认创建5个分片, 一份备份, 可以修改, 分片的数量只能在创建索引的时候指定, 索引创建后就不能修改分片的数量了, 而备份是可以动态修改的
2.2 ES的基本用法
ES以RESTFul风格来命名API的, 其API的基本格式如下
http://<ip>:<port>/<索引>/<类型>/<文档id>
ES的动作是以http方法来决定的: 常用的http方法: GET/PUT/POST/DELETE
Eg1, 创建索引, 结合head插件创建索引的实例


返回”概览”查看创建情况

创建索引分为: 结构化创建与非结构化创建
查看索引是否是结构化的方法


Mappings是结构化的一个关键词, 其后内容是空的, 说明这个索引是一个非结构化的索引
创建结构化索引的方法
点击head插件的”复合查询”

验证json后, 提交请求,

返回head插件”概览查看”

Head插件中编写json发送请求比较复杂, 可以使用postman或者是fiddler等工具进行请求的发送

请求数据的json格式
{
"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": {}
}
}
2.2.1> 数据插入
文档id, 唯一索引值, 指向文档数据
2.2.1.1 指定文档id插入
使用http中的put方法,
插入时输入的ip地址, 如http://192.168.253.129:9200/people/man/1
请求参数依次为:索引名称/类型名称/文档id
请求参数
{
"name": "瓦力",
"country": "China",
"age": 30,
"date": "1987-03-07 12:12:12"
}

Head插件中”数据浏览”

2.2.1.2 自动产生文档id插入
使用http中的post方法,
插入时输入的ip地址, 如http://192.168.253.129:9200/people/man
请求参数
{
"name": "超重瓦力",
"country": "China",
"age": 40,
"date": "1977-03-07 12:12:12"
}
响应结果

2.2.2> 修改文档数据
2.2.2.1 直接修改文档
http方法: post方法
请求地址: http://192.168.253.129:9200/people/man/1/_update
关键词: _update, doc
请求参数
{
"doc": {
"name": "谁是瓦力"
}
}
“doc”为关键字, 要修改的文档放在doc中, 实例修改了type为people索引下man中id为1 的name属性
返回的结果

可以在head插件中”数据浏览”中验证修改结果

2.2.2.2 脚本修改文档
通过脚本修改的api格式与直接修改的是一致的
http方法: post方法
请求地址: http://192.168.253.129:9200/people/man/1/_update
请求参数
{
"script": {
"lang": "painless",
"inline": "ctx._source.age += 30"
}
}
关键字”script”: 标志以脚本的方式修改文档
“lang”: 表示以何种脚本语言进行修改, “painless”表示以es内置的脚本语言进行修改. 此外es还支持多种脚本语言, 如Python, js等等
“inline”:指定脚本内容 “ctx”代表es上下文, _source 代表文档

可以在head插件中”数据浏览”检查修改数据
此外还有其他的参数设置方式, 例如将参数放到外面
{
"script": {
"lang": "painless",
"inline": "ctx._source.name = params.name; ctx._source.age = params.age",
"params": {
"age": 30,
"name": "谁是瓦力"
}
}
}

2.2.3> 删除
2.2.3.1 删除文档
http方法: delete
请求路径http://192.168.253.129:9200/people/man/1

2.2.3.1 删除索引
1. 可以通过head插件进行删除

2. 通过api删除
Http方法: delete
链接地址: http://192.168.253.129:9200/book

ES 的基本用法的更多相关文章
- ES的基本用法
ES的基本概念 1> 集群和节点 一个es集群是由一个或多和es节点组成的集合 每一个集群都有一个名字, 如之前的wali 每个节点都有自己的名字, 如之前的master, slave1, sl ...
- OpenGL ES学习笔记(一)——基本用法、绘制流程与着色器编译
首先声明下,本文为笔者学习<OpenGL ES应用开发实践指南(Android卷)>的笔记,涉及的代码均出自原书,如有需要,请到原书指定源码地址下载. 在Android.iOS等移动平台上 ...
- ES 基本用法
转自:https://www.cnblogs.com/rodge-run/p/7760308.html ES的基本概念 1> 集群和节点 一个es集群是由一个或多和es节点组成的集合 每一个集群 ...
- OpenGL ES学习笔记(二)——平滑着色、自适应宽高及三维图像生成
首先申明下,本文为笔者学习<OpenGL ES应用开发实践指南(Android卷)>的笔记,涉及的代码均出自原书,如有需要,请到原书指定源码地址下载. <Android学习笔记--O ...
- Elasticsearch大规模时序索引如何治理和规划
什么是时序索引? 其主要特点体现在两个方面, 一存,以时间为轴,数据只有增加,没有变更,并且必须包含timestamp(日期时间,名称随意)字段,其作用和意义要大于数据的id字段,常见的数据比如我们通 ...
- elastaicsearch基础----->elastaicsearch的使用(一)
这里面我们总结一下es的一些基础使用. es的基础用法 一.es索引的创建 在postman中,请求url地址:192.168.1.112:9200/user.请求方式:PUT.请求内容如下: { & ...
- Android+PHP开发最佳实践
本书以一个完整的微博应用项目实例为主线,由浅入深地讲解了Android客户端开发和PHP服务端开发的思路和技巧.从前期的产品设计.架构设计,到客户端和服务器的编码实现,再到性能测试和系统优化,以及最后 ...
- ElasticSearch 学习记录之ES短语匹配基本用法
短语匹配 短语匹配故名思意就是对分词后的短语就是匹配,而不是仅仅对单独的单词进行匹配 下面就是根据下面的脚本例子来看整个短语匹配的有哪些作用和优点 GET /my_index/my_type/_sea ...
- ES模块的基本用法常见使用问题
本文作者:高峰,360奇舞团前端工程师,W3C WoT工作组成员. ES6中引入了模块(Modules)的概念,相信大家都已经挺熟悉的了,在日常的工作中应该也都有使用. 本文会简单介绍一下ES模块的优 ...
随机推荐
- 虚拟环境搭建Django项目
下载虚拟环境包 pip install virtualenv 创建虚拟环境 virtualenv env 进入env文件夹 cd env 进入Scripts文件夹 cd Scripts 启动虚拟环 ...
- 20 闭包、nonlocal
闭包的概念 闭包就是能够读取其他函数内部变量的函数. 从模块级别调用函数内部的局部变量. 闭包 = 函数+环境变量(函数外部的变量) 闭包存在的条件 闭包必须返回一个函数 被返回的函数必须调用环境变量 ...
- Spring Boot配置文件yml讲解--行内对象的配置方式
yml行内对象的配置方法,一般是采取 上面的缩进方式,我只想配置在一行怎么处?——
- Golang官方log包详解
Golang官方log包详解 以下全是代码, 详解在注释中, 请从头到尾看 // Copyright 2009 The Go Authors. All rights reserved. // Use ...
- VS.NET(C#)--2.8HTML服务器控件
HTML服务器控件 服务器不处理HTML控件,例如:<h1>.<a>超链接.<input>,直接送到客户端,由浏览器呈现. 把HTML控件转换成HTML服务器控件, ...
- 8. Java的运算符
计算机的最基本用途之一就是执行数学运算,作为一门计算机语言,Java也提供了一套丰富的运算符来操纵变量. 我们把运算符具体分为:算数运算符,比较运算符,逻辑运算符,位运算符,赋值运算符,条件运算符,i ...
- 苹果appstore应用名下面的开发者名称填写或修改
最近上架不小心遇到一个问题,开发者名称写错了,放假前大意了,记录一下修改过程,希望碰到同样问题的伙伴不要要着急,下面的内容可能帮你哦. 我们应用的之前的开发者名称是个人的,之前没注意这个问题,以后想注 ...
- Node.js 实战(一)之—防灾备措施
前言 博客系统上线已经3个多月了,中间没有出现过宕机事故,一直稳定运行.自己写的代码还是挺严谨的,小小鼓励一下!上周对云服务器进行了一次内存扩容,扩容后重启了一次服务器.虽然过程很短,但是因重启后导致 ...
- requests模块的基本用法
requests 什么是requests模块 python中封装好的一个基于网络请求的模块 作用 用来模拟浏览器发送请求 环境安装 pip install requests 编码流程 指定 url 发 ...
- iOS开发-NSArray
忙了一上午,解决了几个bug,现在终于抽出来一点时间喝点水休息下, 想着系列这么浩大的一个工程,才刚刚开始写,不能断了,就跟写小说一样,既然是系列,那么就需要不停更... 好吧. 简单的说说iOS开发 ...