1. 我们通常用用_cat API检测集群是否健康。 确保9200端口号可用:

  curl 'localhost:9200/_cat/health?v'

  绿色表示一切正常, 黄色表示所有的数据可用但是部分副本还没有分配,红色表示部分数据因为某些原因不可用.

  2.通过如下语句,我们可以获取集群的节点列表:

  curl 'localhost:9200/_cat/nodes?v'

  3。通过如下语句,列出所有索引:

  curl 'localhost:9200/_cat/indices?v'

 4.创建索引

  现在我们创建一个名为“customer”的索引,然后再查看所有的索引:

 curl -XPUT 'localhost:9200/customer?pretty'

5.插入和获取

  现在我么插入一些数据到集群索引。我们必须给ES指定所以的类型。如下语句:"external" type, ID:1:

  主体为JSON格式的语句: { "name": "John Doe" }

  curl -XPUT 'localhost:9200/customer/external/1?pretty' -d '
  {
           "name": "John Doe"
  }'

6.删除索引 DELETE

  curl -XDELETE 'localhost:9200/customer?pretty'

 7.通过以上命令语句的学习,我们发现索引的增删改查有一个类似的格式,总结如下:

  curl -X<REST Verb> <Node>:<Port>/<Index>/<Type>/<ID>

  <REST Verb>:REST风格的语法谓词

  <Node>:节点ip

  <port>:节点端口号,默认9200

  <Index>:索引名

  <Type>:索引类型

  <ID>:操作对象的ID号

  8 修改数据

  curl -XPUT 'localhost:9200/customer/external/1?pretty' -d '
  {
    "name": "John Doe"
  }'
  curl -XPUT 'localhost:9200/customer/external/1?pretty' -d '
  {
    "name": "Jane Doe"
  }'

  上述命令语句是:先新增id为1,name为John Doe的数据,然后将id为1的name修改为Jane Doe。

  9.更新数据

  9.1 这个例子展示如何将id为1文档的name字段更新为Jane Doe:

  curl -XPOST 'localhost:9200/customer/external/1/_update?pretty' -d '
  {
    "doc": { "name": "Jane Doe" }
  }'

  9.2 这个例子展示如何将id为1数据的name字段更新为Jane Doe同时增加字段age为20:

  curl -XPOST 'localhost:9200/customer/external/1/_update?pretty' -d '
  {
    "doc": { "name": "Jane Doe", "age": 20 }
  }'

  9.3  也可以通过一些简单的scripts来执行更新。一下语句通过使用script将年龄增加5:

  curl -XPOST 'localhost:9200/customer/external/1/_update?pretty' -d '
  {
    "script" : "ctx._source.age += 5"
  }'

  10 删除数据

  删除数据那是相当的直接. 下面的语句将执行删除Customer中ID为2的数据:

  curl -XDELETE 'localhost:9200/customer/external/2?pretty'

  11 批处理

  举例:

  下面语句将在一个批量操作中执行创建索引:

  curl -XPOST 'localhost:9200/customer/external/_bulk?pretty' -d '
  {"index":{"_id":"1"}}
  {"name": "John Doe" }
  {"index":{"_id":"2"}}
  {"name": "Jane Doe" }
  '

  下面语句批处理执行更新id为1的数据然后执行删除id为2的数据

  curl -XPOST 'localhost:9200/customer/external/_bulk?pretty' -d '
  {"update":{"_id":"1"}}
  {"doc": { "name": "John Doe becomes Jane Doe" } }
  {"delete":{"_id":"2"}}

12.导入数据集 

  导入示例数据集:

  curl -XPOST 'localhost:9200/bank/account/_bulk?pretty' --data-binary "@accounts.json"

13.查询

  Sample:

  curl 'localhost:9200/bank/_search?q=*&pretty'
  根据ID查询:
  curl -XGET 'http://localhost:9200/twitter/tweet/1'

14 查询语言

  匹配所有数据,但只返回1个:

  curl -XPOST 'localhost:9200/bank/_search?pretty' -d '

  {

  "query": { "match_all": {} },

    "size": 1

  }'

  注意:如果siez不指定,则默认返回10条数据。

  curl -XPOST 'localhost:9200/bank/_search?pretty' -d '

  {

  "query": { "match_all": {} },

    "from": 10,

   "size": 10

  }'

  返回从11到20的数据。(索引下标从0开始)

  curl -XPOST 'localhost:9200/bank/_search?pretty' -d '

  {

   "query": { "match_all": {} },

  "sort": { "balance": { "order": "desc" } }

  }'

  上述示例匹配所有的索引中的数据,按照balance字段降序排序,并且返回前10条(如果不指定size,默认最多返回10条)。

15.执行搜索

  下面例子展示如何返回两个字段(account_number balance)

  curl -XPOST 'localhost:9200/bank/_search?pretty' -d '

  {

    "query": { "match_all": {} },

   "_source": ["account_number", "balance"]

  }'

 16.过滤filter(查询条件设置)

  下面这个例子使用了布尔查询返回balance在20000到30000之间的所有数据。

  curl -XPOST 'localhost:9200/bank/_search?pretty' -d '

  {

      "query": {

      "bool": {

      "must": { "match_all": {} },

     "filter": {

    "range": {

  "balance": {

    "gte": 20000,

   "lte": 30000

   }

   }

   }

   }

  }

  }'

  17 聚合 Aggregations

  下面这个例子: 将所有的数据按照state分组(group),然后按照分组记录数从大到小排序,返回前十条(默认):

  curl -XPOST 'localhost:9200/bank/_search?pretty' -d '

  {

  "size": 0,

   "aggs": {

   "group_by_state": {

    "terms": {

      "field": "state"

    }

   }

  }

  }'

  注意:我们设置size=0,不显示查询hits,因为我们只想看返回的聚合结果。

  18 查询某个type的Mapping

   curl -XGET 'http://local:9200/my_index/_mapping/my_type'

[ES]ES查询指南的更多相关文章

  1. ES 复合查询

    ES在查询过程中比较多遇到符合查询,既需要多个字段过滤也需要特殊情况处理,本文简单介绍几种查询组合方便快捷查询ES. bool布尔查询有一个或者多个布尔子句组成     filter 只过滤符合条件的 ...

  2. es的查询、排序查询、分页查询、布尔查询、查询结果过滤、高亮查询、聚合函数、python操作es

    今日内容概要 es的查询 Elasticsearch之排序查询 Elasticsearch之分页查询 Elasticsearch之布尔查询 Elasticsearch之查询结果过滤 Elasticse ...

  3. ES高级查询

    Query Content 在查询过程中,除了判断文档是否满足查询条件外,ES还会计算一个_score来标识匹配的程度,旨在判断目标文档和查询条件的匹配有多好 # POST 192.168.100.1 ...

  4. ES 20 - 查询Elasticsearch中的数据 (基于DSL查询, 包括查询校验match + bool + term)

    目录 1 什么是DSL 2 DSL校验 - 定位不合法的查询语句 3 match query的使用 3.1 简单功能示例 3.1.1 查询所有文档 3.1.2 查询满足一定条件的文档 3.1.3 分页 ...

  5. [ES]Python查询ES导出数据为Excel

    版本 elasticsearch==5.5.0 python==3.7 说明 用python查询es上存储的状态数据,将查询到的数据用pandas处理成excel code # -*- coding: ...

  6. 面试系列九 es 提高查询效率

    ,es性能优化是没有什么银弹的,啥意思呢?就是不要期待着随手调一个参数,就可以万能的应对所有的性能慢的场景.也许有的场景是你换个参数,或者调整一下语法,就可以搞定,但是绝对不是所有场景都可以这样. 一 ...

  7. ES模糊查询来对应mysql的like查询

    使用ES查询来对应mysql的like查询 建立一个测试索引 PUT /test_like1 { "mappings" : { "properties" : { ...

  8. 可以执行全文搜索的原因 Elasticsearch full-text search Kibana RESTful API with JSON over HTTP elasticsearch_action es 模糊查询

    https://www.elastic.co/guide/en/elasticsearch/guide/current/getting-started.html Elasticsearch is a ...

  9. es相关查询接口

    1.查看指定es中所有的索引 GET http://IP:9200/_cat/indices?v 2.修改指定索引的相关配置信息 PUT http://IP:9200/index_name/_sett ...

随机推荐

  1. Python 爬虫常用模块

    1. fake_useragent #pip install fake_useragent requests 2.图展示 pip install pyecharts pip install pyech ...

  2. [疯狂Java]JDBC:PreparedStatement预编译执行SQL语句

    1. SQL语句的执行过程——Statement直接执行的弊病: 1) SQL语句和编程语言一样,仅仅就会普通的文本字符串,首先数据库引擎无法识别这种文本字符串,而底层的CPU更不理解这些文本字符串( ...

  3. Android设置ScrollView回到顶部的三种方式 (转)

    一.ScrollView.scrollTo(0,0)  直接置顶,瞬间回到顶部,没有滚动过程,其中Y值可以设置为大于0的值,使Scrollview停在指定位置; 二.ScrollView.fullSc ...

  4. cloudstack4.11+KVM+4网卡bond5+briage 交换机不作配置

    网卡绑定配置 # cat ifcfg-em1TYPE=EthernetBOOTPROTO=noneDEVICE=em1ONBOOT=yesMASTER=bond0SLAVE=yes# cat ifcf ...

  5. 如何解决make: Nothing to be done for `all' 的方法

    正常情况下,当文件没有更新且已经编译过时,再次make就会报这个错误,表示文件未更新,不需要编译. 如果异常情况没有检测到更新文件,或者想要强制重新编译,只需要make clean,再次编译即可.

  6. avcodec_decode_video2少帧问题

    使用libav转码视频时发现一个问题:使用下面这段代码解码视频时,解码中会不时丢掉几帧. ){ ret = avcodec_decode_video2(video_dec_ctx, vframe, & ...

  7. Jenkins安装部署(二)

    Jenkins配置 一.修改jenkins家目录 由于jenkins在启动个之后会默认将所有的构建应用在家目录中创建一遍,为了合理化服务器资源,重新定义jenkins家目录. 在tomcat的cata ...

  8. [Java笔记]面向对象-单例模式

    单例模式 目标 使JVM中最多只有一个该类的实例,以节省内存.缺点:只能建一个该类的实例. 实现 具体实现思路: 1构造方法私有化//故在外面不能new很多次 2对外提供一个公开的静态的类方法,获取类 ...

  9. XML 解析技术

    xml 解析方式有两种: dom 解析和 sax 解析: 针对着两种解析方式,有三种解析器: sun公司的 jaxp dom4j 组织的 dom4j jdom 组织的 jdom dom 解析XML : ...

  10. JDBC的学习

    JDBC —— 用Java访问数据库 一.需要用到第三方类:mysql-connector-java-5.0.8-bin.jar,并做好导包处理: 二.初始化驱动: 三.建立与数据库的链接: 四.创建 ...