简单认为是可以在命令行下访问url的一个工具
curl是利用URL语法在命令行方式下工作的开源文件传输工具,使用curl可以简单实现常见的get/post请求。
curl
-x 指定http请求的方法
HEAD GET POST PUT DELETE

-d 指定要传输的数据

curl -XPUT 'http://localhost:9200/index_name/'
PUT/POST都可以

CURL 创建索引库

curl -XPUT 'http://localhost:9200/index_name/'
PUT/POST都可以

创建索引

curl -XPOST http://localhost:9200/crxy/employee/1 -d '{
"first_name" : "John",
"last_name" : "Smith",
"age" : 25,
"about" : "I love to go rock climbing",
"interests": [ "sports", "music" ]
}'

索引库名称必须要全部小写,不能以下划线开头,也不能包含逗号
如果没有明确指定索引数据的ID,那么es会自动生成一个随机的ID,需要使用POST参数
curl -XPOST http://localhost:9200/crxy/emp/ -d '{"first_name" : "John"}'
如果想要确定我们创建的都是全新的内容
1:使用自增ID
2:在url后面添加参数
curl -XPUT http://localhost:9200/crxy/emp/2?op_type=create -d '{"name":"crxy","age":25}'
curl -XPUT http://localhost:9200/crxy/emp/2/_create -d '{"name":"crxy","age":25}'
如果成功创建了新的文档,Elasticsearch将会返回常见的元数据以及201 Created的HTTP反馈码。而如果存在同名文件,Elasticsearch将会返回一个409 Conflict的HTTP反馈码

根据员工id查询
curl -XGET http://localhost:9200/crxy/employee/1?pretty
在任意的查询字符串中添加pretty参数,es可以得到易于识别的json结果。
curl后添加-i 参数,这样你就能得到反馈头文件
curl -i 'http://192.168.1.170:9200/crxy/emp/1?pretty'
检索文档中的一部分,如果只需要显示指定字段,
curl -XGET http://localhost:9200/crxy/employee/1?_source=name,age&pretty
如果只需要source的数据
curl -XGET http://localhost:9200/crxy/employee/1/_source

查询所有

curl -XGET http://localhost:9200/crxy/employee/_search
你可以再返回的 hits 中发现我们录入的文档。搜索会默认返回最前的10个数值。

CURL 查询索引-GET

根据条件进行查询

curl -XGET http://localhost:9200/crxy/employee/_search?q=last_name:Smith

ES查询索引-MGET

使用mget API获取多个文档
curl -XGET http://localhost:9200/_mget?pretty -d '{"docs":[{"_index":"crxy","_type":"emp","_id":1,"_source":"name"},{"_index":"website","_type":"blog","_id":2}]}'
如果你需要的文档在同一个_index或者同一个_type中,你就可以在URL中指定一个默认的/_index或者/_index/_type
curl -XGET http://localhost:9200/crxy/emp/_mget?pretty -d '{"docs":[{"_id":1},{"_type":"blog","_id":2}]}'
如果所有的文档拥有相同的_index 以及 _type,直接在请求中添加ids的数组即可
curl -XGET http://localhost:9200/crxy/emp/_mget?pretty -d '{"ids":["1","2"]}'
注意:如果请求的某一个文档不存在,不会影响其他文档的获取结果。HTTP返回状态码依然是200,这是因为mget这个请求本身已经成功完成。要确定独立的文档是否被成功找到,需要检查found标识。
ES可以使用PUT或者POST对文档进行更新,如果指定ID的文档已经存在,则执行更新操作
注意:执行更新操作的时候
ES首先将旧的文档标记为删除状态
然后添加新的文档
旧的文档不会立即消失,但是你也无法访问
ES会在你继续添加更多数据的时候在后台清理已经标记为删除状态的文档

局部更新,可以添加新字段或者更新已有字段(必须使用POST)
curl -XPOST http://localhost:9200/crxy/emp/1/_update -d '{"doc":{"city":"beijing","car":"BMW"}}'

curl -XDELETE http://localhost:9200/crxy/emp/4/
如果文档存在,es会返回200 ok的状态码,found属性值为true,_version属性的值+1
如果文档不存在,es会返回404 Not Found的状态码,found属性值为false,但是_version属性的值依然会+1,这个就是内部管理的一部分,它保证了我们在多个节点间的不同操作的顺序都被正确标记了
注意:删除一个文档也不会立即生效,它只是被标记成已删除。Elasticsearch将会在你之后添加更多索引的时候才会在后台进行删除内容的清理。

通过查询API删除指定索引库下指定类型下的数据
curl -XDELETE 'http://localhost:9200/crxy/emp/_query?q=user:kimchy'
通过查询API删除指定索引库下多种类型下的数据
curl -XDELETE 'http://localhost:9200/crxy/emp,user/_query?q=user:kimchy'

通过查询API删除多个索引库下多种类型下的数据
curl -XDELETE 'http://localhost:9200/crxy,crxy1/emp,user/_query?q=user:kimchy'
或者删除所有索引库中的匹配的数据
curl -XDELETE 'http://localhost:9200/_all/_query?q=tag:wow'
与mget类似,bulk API可以帮助我们同时执行多个请求
格式:
action:index/create/update/delete
metadata:_index,_type,_id
request body:_source(删除操作不需要)
{ action: { metadata }}\n
{ request body }\n
{ action: { metadata }}\n
{ request body }\n
create 和index的区别
如果数据存在,使用create操作失败,会提示文档已经存在,使用index则可以成功执行。
使用文件的方式
vi requests
curl -XPOST/PUT localhost:9200/_bulk --data-binary @request;
bulk请求可以在URL中声明/_index 或者/_index/_type
bulk一次最大处理多少数据量
bulk会把将要处理的数据载入内存中,所以数据量是有限制的
最佳的数据量不是一个确定的数值,它取决于你的硬件,你的文档大小以及复杂性,你的索引以及搜索的负载
一般建议是1000-5000个文档,如果你的文档很大,可以适当减少队列,大小建议是5-15MB,默认不能超过100M,可以在es的配置文件中修改这个值http.max_content_length: 100mb

ES版本控制(1)

普通关系型数据库使用的是(悲观并发控制(PCC))
当我们在读取一个数据前先锁定这一行,然后确保只有读取到数据的这个线程可以修改这一行数据
ES使用的是(乐观并发控制(OCC))
ES不会阻止某一数据的访问,然而,如果基础数据在我们读取和写入的间隔中发生了变化,更新就会失败,这时候就由程序来决定如何处理这个冲突。它可以重新读取新数据来进行更新,又或者将这一情况直接反馈给用户。
ES如何实现版本控制(使用es内部版本号)
1:首先得到需要修改的文档,获取版本(_version)号
curl -XGET http://localhost:9200/crxy/emp/1
2:在执行更新操作的时候把版本号传过去
curl -XPUT http://localhost:9200/crxy/emp/1?version=1 -d '{"name":"crxy","age":25}'(覆盖)
curl -XPOST http://localhost:9200/crxy/emp/1/_update?version=1 -d '{"doc":{"city":"beijing","car":"BMW"}}'(部分更新)
3:如果传递的版本号和待更新的文档的版本号不一致,则会更新失败

ES如何实现版本控制(使用外部版本号)
如果你的数据库已经存在了版本号,或者是可以代表版本的时间戳。这时就可以在es的查询url后面添加version_type=external来使用这些号码。
注意:版本号码必须要是大于0小于9223372036854775807(Java中long的最大正值)的整数。
es在处理外部版本号的时候,它不再检查_version是否与请求中指定的数值是否相等,而是检查当前的_version是否比指定的数值小,如果小,则请求成功。
example:
curl -XPUT 'http://localhost:9200/crxy/emp/20?version=10&version_type=external' -d '{"name": "crxy"}'
注意:此处url前后的引号不能省略,否则执行的时候会报错

elasticsearch2的更多相关文章

  1. Ubuntu 14.04 中 安装elasticsearch2.*+logstash2.*+kibana

    在Ubuntu 14.04 上安装单机版ELK 2.*(脚本化) 1.判断是否为root权限 if [ "${UID}" -ne 0 ]; then echo "You ...

  2. cento下安装elasticsearch2.4.2小记

    1.首先需要安装好java,并配置好环境变量 2.下载elasticsearch的rpm包,命令如下: wget https://download.elastic.co/elasticsearch/r ...

  3. ubuntu12.04+Elasticsearch2.3.3伪分布式配置,集群状态分片调整

    目录 [TOC] 1.什么是Elashticsearch 1.1 Elashticsearch介绍 Elasticsearch是一个基于Apache Lucene(TM)的开源搜索引擎.能够快速搜索数 ...

  4. elasticsearch2.2

    elasticsearch2.2 集群搭建各种坑     目前生产环境的es版本是1.0版本,需要升级到最新的2.2版本,于是在测试环境进行部署集群测试,在测试过程中遇到的坑相当多,下面详细介绍下. ...

  5. elasticsearch2.3.3安装

    本文来自我的github pages博客http://galengao.github.io/ 即www.gaohuirong.cn 摘要: 作者原来搭建的环境是0.95版本 现在升级到2.3.3版本, ...

  6. Linux安装ElasticSearch-2.2.0

    1.下载ElasticSearch-2.2.0安装包 https://www.elastic.co/downloads/elasticsearch 2.安装ElasticSearch-2.2.0 rp ...

  7. Windows安装ElasticSearch-2.2.0

    1.下载ElasticSearch-2.2.0安装包 https://www.elastic.co/downloads/elasticsearch 2.解压缩并安装:CMD窗口运行 elasticse ...

  8. 搜索引擎ElasticSearch系列(一): ElasticSearch2.4.4环境搭建

    一:ElasticSearch简介 Elasticsearch is a distributed, RESTful search and analytics engine capable of sol ...

  9. kubernetes elasticsearch2.4 集群安装

    一.制作docker镜像: Dockerfile文件: FROM alpine:latest MAINTAINER chengcuichao RUN apk update && apk ...

  10. Elasticsearch-2.4.3的单节点安装(多种方式图文详解)

    前提: Elasticsearch-2.4.3的下载(图文详解) 1.新建es安装目录 [root@djt002 local]# mkdir elasticsearch [root@djt002 lo ...

随机推荐

  1. SQL server 2008 数据库企业版安装教程图解

    SQL Server 2008是一个重大的产品版本,它推出了许多新的特性和关键的改进,使得它成为至今为止的最强大和最全面的SQL Server版本.  在现今数据的世界里,公司要获得成功和不断发展,他 ...

  2. 通过代码设置textview颜色

    Resources resource = (Resources) this.getResources();   ColorStateList csl = (ColorStateList) resour ...

  3. js部分---函数与递归;

    function (){}//匿名函数 1.function hanshu () { alert("这是我第一个函数"); } hanshu();//调用函数 2.//有参数的函数 ...

  4. Tomcat的JVM优化

    一.JVM管理内存段分类 1.线程共享内存 方法区:存储jvm加载的class.常量.静态变量.及时编译器编译后的代码等 java堆:存储java所有对象实例.数组等 2.线程私有内存 程序计数寄存器 ...

  5. Codeforces Round #146 (Div. 2)

    A. Boy or Girl 模拟题意. B. Easy Number Challenge 筛素数,预处理出\(d_i\). 三重循环枚举. C. LCM Challenge 打表找规律. 若\(n\ ...

  6. Hive 复习

    hive分为CLI(command line)(用的比较多) JDBC/ODBC-ThriftServer hiveServer(hive -service hiveserver),JDBC访问,一个 ...

  7. POJ-2378 Tree Cutting

    题目大意:一棵n个节点的树,找出所有的点满足:删除它之后,产生的最大(这里节点数最多即为最大)新树中节点数不超n的一半. 题目分析:两次深搜,过程类似求重心. 代码如下: # include<i ...

  8. IOS中如果使用RGB实现背景色

    在开发的过程中.我们往往会碰到图片很多的情况.这时候我们的程序打包就会变得很大.一些纯色的图片可以用RGB来实现.这样可以减少内存的占用MAC本中有数码测色计这个功能.通过这个我们可以获得图片的RGB ...

  9. java中将汉字转换成16进制

    技术交流群:233513714 /** * 将汉字转换车16进制字符串 * @param str * @return st */ public static String enUnicode(Stri ...

  10. [AHOI 2006][BZOJ 1269]文本编辑器editor

    好吧,我承认这是我用来刷随笔数的喵~ 这是一道 splay 裸题,但还是有想本傻 X 一样根本不会写 splay 的,于是乎又用 treap 水过了 splay 的常数我还是知道的,所以真是不知道那些 ...