Elasticsearch基础语法记录

本文示例从《Elasticsearch权威指南》获取,仅作为读书笔记。如需要查看详情,可以查看该书的具体内容。

一、查看ES是否启动成功

GET localhost:9200/?pretty

{
    "name": "DESKTOP-8MG3VHL",
    "cluster_name": "elasticsearch",
    "cluster_uuid": "zmUJSU-FSkKrLG5UhXrBwQ",
    "version": {
        "number": "7.6.2",
        "build_flavor": "default",
        "build_type": "tar",
        "build_hash": "ef48eb35cf30adf4db14086e8aabd07ef6fb113f",
        "build_date": "2020-03-26T06:34:37.794943Z",
        "build_snapshot": false,
        "lucene_version": "8.4.0",
        "minimum_wire_compatibility_version": "6.8.0",
        "minimum_index_compatibility_version": "6.0.0-beta1"
    },
    "tagline": "You Know, for Search"
}

二、查询文档数量

GET /_count?pretty

{
    "count": 20,
    "_shards": {
        "total": 4,
        "successful": 4,
        "skipped": 0,
        "failed": 0
    }
}

同样效果

GET /_count?pretty
{
    "query":{
        "match_all":{}
    }
}

三、基础操作

elasticsearch操作基于restful api进行操作,所以在操作的过程中需要注意请求方法

1、添加文档

PUT /megacory/employee/1 
{
    "first_name":"John",
    "last_name":"Smith",
    "age":25,
    "about":"I love to go rock climbing",
    "interests":["sports","music"]
}

2、获取文档

GET /megacory/employee/1   
{
    "_index" : "megacorp",
    "_type" : "employee",
    "_id" : "1",
    "_version" : 1,
    "found" : true,
    "_source" : {
        "first_name" : "John",
        "last_name" : "Smith",
        "age" : 25,
        "about" : "I love to go rock climbing",
        "interests": [ "sports", "music" ]
      }
}

3、删除文档

DELETE /megacory/employee/1 
  • 如果我们要编辑数据,可以使用PUT方法进行更新操作。

4、搜索指定index、type的所有文档信息

GET /megacory/employee/_search     

5、搜索指定关键字的内容

GET /megacory/employee/_search?last_name:Smith

四、DSL语句查询(Domain Specific Language)

1、基于match关键字查询

GET /megacory/employee/_search
{
    "query":{
        "match":{
            "last_name":"Smith"
        }
    }
}

2、通过filter过滤查询

GET /megacory/employee/_search
{
    "filtered":{
        "filter":{
            "range":{
                "age":{"gt":30}
            }
        },
        "query":{
            "match":{
                "last_name":"Smith"
            }
        }
    }
}

filtered关键字对query查询出的数据用filter中的条件进行过滤,查询出age大于30的数据

五、全文检索

elasticsearch通过_score的方式进行搜索匹配度排序,分值越高的越靠前

GET /megacory/employee/_search
{
    "query":{
        "match":{
            "about":"rock climbing"
        }
    }
}

搜索出多条记录,按照_score进行排序。此时查询的结果中包含rockclimbingrock climbing的都会被查询出来

六、短语搜索

GET /megacory/employess/_search
{
    "query":{
        "match_phrase":{
            "about":"rock climbing"
        }
    }
}

通过短语搜索关键字match_phrase进行匹配时,匹配的内容严格按照rock climbing进行匹配,匹配过程中不会把关键字进行拆分。

七、高亮搜索关键字

GET /megacory/employess/_search
{
    "query":{
        "match_phrase":{
            "about":"rokc climbing"
        }
    },
    "highlight":{
        "fields":{
            "about":{}
        }
    }
}

通过关键字highlight进行高亮显示设置。当设置了高亮属性后,查询结果会给关键字加上<em></em>标签

八、聚合分析

聚合分析通过关键字agg进行操作。

1、根据某个字段统计

GET /megacory/employees/_search
{
    "aggs":{
        "all_interests":{
            "terms":{
                "field":"interests"
            }
        }
    }
}
  • aggs 聚合分析操作关键字
  • all_interests 自定义返回结果key
  • term 指定需要分析的字段名
  • 返回结果:
{
    "aggregations": {
        "all_interests": {
          "buckets": [ 
              { 
                  "key": "music", 
                  "doc_count": 2 
              },
              {
                  "key": "forestry", 
                  "doc_count": 1 
              },
              { 
                  "key": "sports", 
                  "doc_count": 1 
              } 
          ] 
        } 
    }
}
  • 结果中默认生成以doc_count为key的文档统计数量,该统计数量对应指定field
  • aggregations返回分析结果
  • buckets 返回结果集

2、在查询结果中进行聚合分析

通过一定条件进行过滤,再把过滤出来的数据进行聚合分析。例子:统计last_name为smith的用户兴趣爱好

GET /megacory/employee/_search
{
    "query":{
        "match":{
            "last_name":"smith"
        }
    },
    "aggs":{
        "all_interests":{
            "terms":{
                "field":"interests"
            }
        }
    }
}   

3、聚合分级汇总

基于聚合统计数据再进行统计汇总。例子:根据interests field进行汇总,并统计汇总中所有人的平均年龄。

GET /megacory/emloyee/_search
{
    "aggs":{
        "all_interests":{
            "terms":{"field":"interests"},
            "aggs":{
                "avg_age":{
                    "avg":{"field":"age"}
                }
            }
        }
    }
}
  • avg 求指定field的平均值
  • 注意aggs层级关系
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 220,367评论 6 512
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 93,959评论 3 396
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 166,750评论 0 357
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 59,226评论 1 295
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 68,252评论 6 397
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,975评论 1 308
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,592评论 3 420
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 39,497评论 0 276
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 46,027评论 1 319
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 38,147评论 3 340
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 40,274评论 1 352
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,953评论 5 347
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,623评论 3 331
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 32,143评论 0 23
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 33,260评论 1 272
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 48,607评论 3 375
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 45,271评论 2 358