zoukankan      html  css  js  c++  java
  • ES学习之ES语法入门

    背景:

     公司最近的项目涉及到ES查询,空余之中对ES进行了一个入门的学习,ES真是个强大的搜索引擎。

    ES 入门语法(ES对document 文档的增删改查)

      1 #获取所有索引
      2 GET _search
      3 {
      4   "query": {
      5     "match_all": {}
      6   }
      7 }
      8 #获取集群的健康状态
      9 GET /_cat/health?v
     10 #获取ES节点
     11 GET /_cat/nodes?v
     12 #获取所有index
     13 GET /_cat/indices?v
     14 #获取es的健康状态,索引
     15 GET /_cat/indices?v&h=health,status,index
     16 PUT /xinhua
     17 {
     18   "acknowledged": true,
     19   "shards_acknowledged": true,
     20   "index": "xinhua"
     21 }
     22 GET /question_content/all
     23 #在es里创建一个索引为megacorp,索引为employee ,id 为1的第一条数据
     24 
     25 #将 HTTP 命令由 PUT 改为 GET 可以用来检索文档,同样的,可以使用 DELETE 命令来删除文档,以及使用 HEAD 指令来检查文档是否存在。如果想更新已存在的文档,只需再次 PUT 
     26 PUT /megacorp/employee/1
     27 {
     28     "first_name" : "John",
     29     "last_name" :  "Smith",
     30     "age" :        25,
     31     "about" :      "I love to go rock climbing",
     32     "interests": [ "sports", "music" ]
     33 }
     34 
     35 GET /megacorp/employe/1
     36 PUT /megacorp/employee/2
     37 {
     38     "first_name" :  "Jane",
     39     "last_name" :   "Smith",
     40     "age" :         32,
     41     "about" :       "I like to collect rock albums",
     42     "interests":  [ "music" ]
     43 }
     44 PUT /megacorp/employee/3
     45 {
     46     "first_name" :  "Douglas",
     47     "last_name" :   "Fir",
     48     "age" :         35,
     49     "about":        "I like to build cabinets",
     50     "interests":  [ "forestry" ]
     51 }
     52 GET /megacorp/employee/1
     53 #查看文档是否存在
     54 HEAD /megacorp/employee/1
     55 #检索文档
     56 GET /megacorp/employee/_search
     57 #条件检索文档,查找出last_name = Smith的雇员
     58 GET /megacorp/employee/_search?q=last_name:Smith
     59 #ES DSL 查询语句,可以拼接更多的查询条件,后面会介绍
     60 GET /megacorp/employee/_search
     61 {
     62   "query": {
     63     "match": {
     64       "last_name": "Smith"
     65     }
     66   }
     67  
     68 }
     69 
     70 
     71 
     72 
     73 #按照组合条件搜索,查询出last_name = Smith,且年龄大于30岁的雇员,gte为大于
     74 GET /megacorp/employee/_search
     75 {
     76   "query": {
     77     "bool": {
     78     "must": 
     79       {
     80         "match": {
     81           "last_name": "Smith"
     82         }
     83       },
     84       "filter": 
     85         {"range": {
     86           "age": {
     87             "gte": 30
     88           }
     89         }}
     90 
     91     }
     92   }
     93 }
     94 #ES默认全文匹配含有的搜索
     95 GET /megacorp/employee/_search
     96 {
     97   "query": {
     98     "match": {
     99       "about": "rock climbing"
    100     }
    101   }
    102 }
    103 #短语搜索,查询 "rock climbing" 短语存在的雇员
    104 GET /megacorp/employee/_search
    105 {
    106   "query": {
    107     "match_phrase": {
    108       "about": "rock climbing"
    109     }
    110   }
    111 }
    112 #高亮搜索
    113 GET /megacorp/employee/_search
    114 {
    115   "query": {
    116     "match_phrase": {
    117       "about": "rock climbing"
    118     }
    119   },
    120   "highlight": {
    121     "fields": {
    122       "about":{}
    123     }
    124   }
    125 }
    126 #分析
    127 #终于到了最后一个业务需求:支持管理者对员工目录做分析。 #Elasticsearch 有一个功能叫聚合(aggregations),允许我们基于##数据生成一些精细的分析结果。聚合与 SQL 中的 GROUP BY #类似但更强大。
    128 #举个例子,挖掘出员工中最受欢迎的兴趣爱好:
    129 
    130 GET /megacorp/employee/_search
    131 {
    132   "aggs": {
    133     "all_interests": {
    134       "terms": { "field": "interests" }
    135     }
    136   }
    137 }
    138 #坑1:从异常信息中可以看出,是因为我要聚合的字段【interests】没有进行优化,也类似没有加索引。没有优化的字段es默认是禁止聚合/排序操作的。所以需要将要聚合的字段添加优化
    139 PUT /megacorp/_mapping
    140 {
    141   "properties": {
    142     "interests": { 
    143       "type":     "text",
    144       "fielddata": true
    145     }
    146   }
    147 }

    官方文档:https://www.elastic.co/guide/cn/elasticsearch/guide/current/index.html

  • 相关阅读:
    当···时发生了什么?
    数据存储-3、数据库分库分表思路
    数据存储-2、反模式设计
    数据存储-1、MySQL 索引使用的注意事项
    锁机制-4、synchronized 与 lock 的区别
    锁机制-3、synchronize 实现原理
    锁机制-1、乐观锁与悲观锁以及乐观锁的一种实现方式
    线程-11、线程的生命周期
    线程-10、线程池的几种方式
    线程-9、线程池的实现原理
  • 原文地址:https://www.cnblogs.com/Neotester/p/12791903.html
Copyright © 2011-2022 走看看