文档章节

ElasticSearch

JesseYan
 JesseYan
发布于 2015/03/14 19:59
字数 1323
阅读 19
收藏 0

参考资料:http://blog.csdn.net/cnweike/article/details/33736429

官方文档:http://www.elasticsearch.org/guide/en/elasticsearch/reference/current/

 

1.关键名词:

索引:拥有几分相似特征的文档的集合。如客户资料

类型:在一个索引中,你可以定义一种或多种类型。如博客数据类型、评论数据类型

文档:索引的基础单位。如一位客户的资料

 

2.常见命令:curl - ://
//检查集群健康状态
curl 'localhost:9200/_cat/health?v'

//检查集群中的节点列表
curl 'localhost:9200/_cat/nodes?v'

//查看所有索引
curl 'localhost:9200/_cat/indices?v'

//查看索引customer下、类型external下的文档号为1的文档内容

curl 'localhost:9200/customer/external/1?pretty' 或
curl -XGET 'localhost:9200/customer/external/1?pretty'



//创建索引customer
curl -XPUT 'localhost:9200/customer

                                
//创建索引customer下、类型external下的文档,制定文档id为1
curl -XPUT 'localhost:9200/customer/external/1' -d '               
{
    "name": "John Doe"
  }'

//说明:对其做第二遍,如果内容不同,john doe,则会覆盖

//创建未指定id的一个文档

curl -XPOST "localhost:9200/yjy_index/yjy_type" -d '{"name":"yjy"}'



//删除索引customer
curl -XDELETE 'localhost:9200/customer'

//删除符合条件的文档(删除所有名为yjy的文档)

curl -XDELETE 'localhost:9200/yjy_index/yjy_type/_query?pretty' -d '
        {
          "query": { "match": { "name": "yjy" } }
        }'

//修改文档,用文档id【多了doc关键字,和{}区分】,也多多了一个字段,year

curl -XPOST "localhost:9200/yjy_index/yjy_type/1/_update" -d '{"doc":{"name":"yjy","year":"2014"}}'

结果

{

  "_index" : "yjy_index",

  "_type" : "yjy_type",

  "_id" : "1",

  "_version" : 3,

  "found" : true,

  "_source":{"name":"yjy","year":"2014"}

}

 

//修改文档,用js脚本【自动按上面转为字符+】

curl -XPOST 'localhost:9200/yjy_index/yjy_type/1/_update' -d '{"script":"ctx._source.year += 5"}'

 

//批处理文档:_bulk API 【修改文档1,删除文档2】

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

//说明: bulk API按顺序执行这些动作。如果其中一个动作因为某些原因失败了,将会继续处理它后面的动作。当bulk API返回时,它将提供每个动作的状态(按照同样的顺序)

//批量导入json文件【json文件accounts.json在当前目录下】

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


两种搜索运行方式:

1.在REST请求的URI中发送搜索参数

curl "localhost:9200/bank/account/_search?q=*&pretty"
参数说明:q=* 指匹配所有文档【?】

pretty:以json格式呈现;【&】

实例  Expand source

 

 

对响应的解释

- took —— Elasticsearch执行这个搜索的耗时,以毫秒为单位 - timed_out —— 指明这个搜索是否超时

- _shards —— 指出多少个分片被搜索了,同时也指出了成功/失败的被搜索的shards的数量

- hits —— 搜索结果

- hits.total —— 能够匹配我们查询标准的文档的总数目

- hits.hits —— 真正的搜索结果数据(默认只显示前10个文档)

- _score和max_score —— 文档相关度得分

 

 

2.将搜索参数发送到REST请求体中 【推荐】---耗时更短

等价于:【json格式请求体,关键字】

curl -XPOST 'localhost:9200/bank/account/_search?pretty' -d '
            {
              "query": { "match_all": {} }
            }'

实例  Expand source

 

搜索语句:【匹配所有,match_all,包含,不等于

查询前五个

curl -XPOST 'localhost:9200/bank/_search?pretty' -d '
        {
          "query": { "match_all": {} },
          "size": 5
        }'

 

查询11-20

curl -XPOST 'localhost:9200/bank/_search?pretty' -d '
        {
          "query": { "match_all": {} },
          "from": 11,
          "size": 10
        }'

 

以账户余额降序排序,最后返前十个文档

curl -XPOST 'localhost:9200/bank/_search?pretty' -d '
        {
          "query": { "match_all": {} },
          "sort": { "balance": { "order": "desc" } }
        }'

 

设定筛选返回的字段:如下只要两个

curl -XPOST 'localhost:9200/bank/_search?pretty' -d '
        {
          "query": { "match_all": {} },
          "_source": ["account_number", "balance"]
        }'

实例  Expand source

匹配符合条件的文档:XPOST  match

curl -XPOST 'localhost:9200/bank/_search?pretty' -d '
        {
          "query": { "match": { "address": "mill" } }
        }'

匹配地址中有 Mill或Lane   {},大小写不区分

curl -XPOST 'localhost:9200/bank/_search?pretty' -d '
        {
          "query": { "match": { "address": "mill lane" } }
        }'

 

匹配分隔的短语mill lane,用match变体【match_phrase】,包含,不限大小写

curl -XPOST 'localhost:9200/bank/_search?pretty' -d '
        {
          "query": { "match_phrase": { "address": "mill lane" } }
        }'

实例  Expand source

返回“x和y”条件的----bool逻辑判断,返回地址为mill和lane

curl -XPOST 'localhost:9200/bank/_search?pretty' -d '
        {
          "query": {
            "bool": {
              "must": [
                { "match": { "address": "mill" } },
                { "match": { "address": "lane" } }
              ]
            }
          }
        }'

 

返回“x或y”条件的----bool逻辑判断,返回地址为mill和lane

curl -XPOST 'localhost:9200/bank/_search?pretty' -d '
        {
          "query": {
            "bool": {
              "should": [
                { "match": { "address": "mill" } },
                { "match": { "address": "lane" } }
              ]
            }
          }
        }'

 

既不包含“mill”,同时也不包含“lane”的

curl -XPOST 'localhost:9200/bank/_search?pretty' -d '
        {
          "query": {
            "bool": {
              "must_not": [
                { "match": { "address": "mill" } },
                { "match": { "address": "lane" } }
              ]
            }
          }
        }'

 

被过滤 以及 过滤器 -----影响相关度越小越好,最小1

过滤器,它允许我们通过一个区间的值来过滤文档.相当于select where

curl -XPOST 'localhost:9200/bank/_search?pretty' -d '
        {
          "query": {
            "filtered": {
              "query": { "match_all": {} },
              "filter": {
                "range": {
                  "balance": {
                    "gte": 20000,
                    "lte": 30000
                  }
                }
              }
            }
          }
        }'

 

 

聚合aggs—分组统计

按照state分组,按照州名的计数倒序排序

注意我们将size设置成0,这样我们就可以只看到聚合结果了,而不会显示命中的结果

curl -XPOST 'localhost:9200/bank/_search?pretty' -d '
        {
          "size": 0,
          "aggs": {
            "group_by_state": {
              "terms": {
                "field": "state"
              }
            }
          }
        }'

实例  Expand source

每个州的账户的平均余额,只统计,不细分,十个

把average_balance聚合嵌套在了group_by_state聚合之中

curl -XPOST 'localhost:9200/bank/_search?pretty' -d '
        {
          "size": 0,
          "aggs": {
            "group_by_state": {
              "terms": {
                "field": "state"
              },
              "aggs": {
                "average_balance": {
                  "avg": {
                    "field": "balance"
                  }
                }
              }
            }
          }
        }'

 

使用年龄段(20-29,30-39,40-49)分组,然后在用性别分组,然后为每一个年龄段的每一个性别计算平均账户余额

curl -XPOST 'localhost:9200/bank/_search?pretty' -d '
        {
          "size": 0,
          "aggs": {
            "group_by_age": {
              "range": {
                "field": "age",
                "ranges": [
                  {
                    "from": 20,
                    "to": 30
                  },
                  {
                    "from": 30,
                    "to": 40
                  },
                  {
                    "from": 40,
                    "to": 50
                  }
                ]
              },
              "aggs": {
                "group_by_gender": {
                  "terms": {
                    "field": "gender"
                  },
                  "aggs": {
                    "average_balance": {
                      "avg": {
                        "field": "balance"
                      }
                    }
                  }
                }
              }
            }
          }
        }'


© 著作权归作者所有

共有 人打赏支持
上一篇: scala
下一篇: Git,GitHub使用
JesseYan
粉丝 3
博文 6
码字总数 3094
作品 0
朝阳
高级程序员
私信 提问
蛋疼的ElasticSearch(三)之配置elasticsearch-analysis-ik和集群

配置elasticsearch-analysis-ik 1.下载https://github.com/medcl/elasticsearch-analysis-ik 2.解压 elasticsearch-analysis-ik-master.zip 3.mvn clean package 4.打开编译targetreleases,......

cmazxiaoma
10/23
0
0
Elastic 在年度用户大会 Elastic{ON} 2018 上发布众多新功能和技术预览

下载超过 2.25 亿次,Elastic 公开 X-Pack 源代码 旧金山 (Elastic{ON} 2018) – 2018 年 2 月 27 日 – Elastic,Elasticsearch 和 Elastic Stack背后的公司,今天宣布其产品累计下载次数达...

Medcl
03/01
0
0
centos 7( linux )下安装elasticsearch教程

目录 概述 环境准备 elaticsearch简介 安装elasticsearch 彩蛋 概述 很久没有写博客了,最近在做全文检索的项目,发现elasticsearch踩了不少坑,百度点进去又是坑,在此记录一下自己的踩坑历程。...

java_龙
10/15
0
0
ElasticSearch开发问题汇总(不断更新中)

1、Mapping: [译]ElasticSearch数据类型--string类型已死, 字符串数据永生 ElasticSearch动态日期映射 2、Spring Data Elasticsearch: Spring Data Elasticsearch教程...

九州暮云
07/18
0
0
logstash、elasticsearch、kibana搭建日志平台

1、下载logstash a、官方下载地址:https://www.elastic.co/downloads/logstash b、解压:tar -xzvf logstash-5.1.1.tar.gz c、设置用户测试的配置文件:vim logstatsh_test.conf,编辑内容如...

binhu
05/23
0
0

没有更多内容

加载失败,请刷新页面

加载更多

20181213 上课截图

小丑鱼00
13分钟前
0
0
nginx+php-fpm配置后页面显示空白的解决方法以及用nginx和php-fpm解决“502 Bad Gateway”问题

https://stackoverflow.com/questions/15423500/nginx-showing-blank-php-pages For reference, I am attaching my location block for catching files with the .php extension: location ~......

Yao--靠自己
20分钟前
1
0
mac 没声音

somehow不时就会出现这种情况。之前都得重启。 其实可以直接在terminal里打以下命令: sudo kextunload /System/Library/Extensions/AppleHDA.kext sudo kextload /System/Library/Extension...

dubox
36分钟前
1
0
看完让你彻底搞懂Websocket原理

作者:Ovear 链接:https://www.zhihu.com/question/20215561/answer/40316953 来源:知乎 著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。 额。。最高票答案没答到点...

时刻在奔跑
50分钟前
2
0
Spring Cloud Stream消费失败后的处理策略(一):自动重试

之前写了几篇关于Spring Cloud Stream使用中的常见问题,比如: 如何处理消息重复消费 如何消费自己生产的消息 下面几天就集中来详细聊聊,当消息消费失败之后该如何处理的几种方式。不过不论...

程序猿DD
52分钟前
0
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部