zoukankan      html  css  js  c++  java
  • elasticsearch 初步使用常用语法总结(依据官方文档)

    GET /_cat/health?v  查看健康状态  ?v 显示字段名

    GET /_cat/nodes?v  查看节点情况

    GET /_cat/indices?v   查看索引

    PUT /customer?pretty 添加名为customer的索引

    添加数据:

    PUT /customer/doc/1?pretty    为customer 添加标识为1的文档,内容为"name":"John doe"  pretty打印响应json
    {
      "name": "John Doe"
    }
    如果客户索引事先不存在,则Elasticsearch将自动创建索引。标识同理。
    POST /customer/doc?pretty  使用post将自动创建标识
    {
      "name": "Jane Doe"
    }
    若多次执行PUT /customer/doc/1?pretty,则提交的json内容将替换标识1下的文档
    GET /customer/doc/1?pretty    查看customer索引下标识id为1的文档内容
    DELETE /customer?pretty  删除customer索引

      更新:

    POST /customer/doc/1/_update?pretty  更新标识为1的文档,添加年龄字段
    {
      "doc": { "name": "Jane Doe" ,"age":20}
    }
    POST /customer/doc/1/_update?pretty  简单脚本,年龄将增加5,ctx.source指即将更新的当前源文档(没有修改源文档)
    { 
      “script”:“ctx._source.age += 5” 
    }

      批处理:

    POST /customer/doc/_bulk?pretty 更新1、2两篇文档
    {"index":{"_id":"1"}}
    {"name": "John Doe" }
    {"index":{"_id":"2"}}
    {"name": "Jane Doe" }
    POST /customer/doc/_bulk?pretty更新文档1,删除文档2
    {"update":{"_id":"1"}}
    {"doc": { "name": "John Doe becomes Jane Doe" } }
    {"delete":{"_id":"2"}}
    

      精确删除操作、排序

    POST twitter/_delete_by_query    _delete_by_query对匹配查询的每个文档执行删除操作
    {
      "query": { 
        "match": {
          "message": "some message"
        }
      }
    }
    GET /bank/_search?q=*&sort=account_number:asc&pretty 
    q=*标识所有文档,sort=account_number:asc表示按照account_number进行排序
    结果:
    took - Elasticsearch执行搜索的时间(以毫秒为单位)
    timed_out - 告诉我们搜索是否超时
    _shards - 告诉我们搜索了多少个分片,以及搜索成功/失败分片的数量
    hits - 搜索结果
    hits.total - 符合我们搜索条件的文档总数
    hits.hits - 实际的搜索结果数组(默认为前10个文档)
    hits.sort - 对结果进行排序键(如果按分数排序则丢失)
    hits._score并max_score- 暂时忽略这些字段
    GET /bank/_search        
    {
      "query": { "match_all": {} },
      "sort": [
        { "account_number": "asc" }
      ]
    }

      设置查找属性

    GET /bank/_search   
    {
      "query": { "match_all": {} },
      "from": 10,   起始文档位置
      "size": 10  展示文档数量
    }
    

      精确查找

    GET /bank/_search
    {
      “query”:{“match_all”:{}},
      “_source”:[“account_number”,“balance”]  只显示bank索引的account_number和balance对应字段
    }
    

      精确匹配及模糊查找

    GET / bank / _search
    {
      “query”:{“match”:{“address”:“mill lane”}} 精确匹配“address”:“maill lane”
    }
    若要模糊匹配,则需要将“match”更换成“match_phrase”匹配词组

      多项匹配

    GET / bank / _search / bank / _search 
    { 
      “query”:{ 
        “bool”:{      #bool与must配套使用
          “must”:[       
            {“match”:{“address” :“mill”}},
            {“match”:{“address”:“lane”}} 
          ] 
        } 
      }         
    } 
    #must 必须出现在文档中 must字句中match所有都必须为真
    #filter 必须出现在文档中,忽略scor, filter 字句中所有match都必须为真
    #should 字句应出现在文档中,bool中若有must或者filter子句, should中任何一个match匹配都视为匹配
    #must_not 不得出现在匹配的文档。字句在过滤上下文中执行,忽略scor使用子句进行高速缓存。 所有match都不匹配

      

    GET / bank / _search 
    { 
      “query”:{ 
        “bool”:{ 
          “must”:{“match_all”:{}}, 
          “filter”:{ 
            “range”:{   #范围
              “balance”:{  
                “gte”:20000,  #大于
                “lte”:30000    #小于
              } 
            } 
          } 
        } 
      } 
    }
    

      

    GET /bank/_search
    {
      "size": 0,
      "aggs": {
        "group_by_state": {   按状态对所有账户分组
          "terms": {
            "field": "state.keyword"
          }
        }
      }
    }
    类似于SELECT state, COUNT(*) FROM bank GROUP BY state ORDER BY COUNT(*) DESC

      

    GET /bank/_search
    {
      "size": 0,
      "aggs": {
        "group_by_age": {    按年龄20-29 。。。分组 最后得到每个年龄段的平均账户余额
          "range": {
            "field": "age",
            "ranges": [
              {
                "from": 20,
                "to": 30
              },
              {
                "from": 30,
                "to": 40
              },
              {
                "from": 40,
                "to": 50
              }
            ]
          },
          "aggs": {
            "group_by_gender": {
              "terms": {
                "field": "gender.keyword",
    	"order":{    #排序
        "average_balance":"desc"  
        }
              },
              "aggs": {
                "average_balance": {  基于组合进行计算
                  "avg": {
                    "field": "balance"
                  }
                }
              }
            }
          }
        }
      }
    }
    

      

  • 相关阅读:
    docker基础:docker网络模式
    WEB架构师成长之路之一-走正确的路(转载)
    DDD(领域驱动设计)
    C#泛型和泛型约束(转载)
    MES系统介绍
    vue中 computed和watch的一些简单理解(区别)(转载)
    sqlserver常用表值函数
    SQLServerAgent 当前未运行,因此无法将此操作通知它。
    浅谈敏捷开发(转载)
    认证、授权、鉴权和权限控制(转载)
  • 原文地址:https://www.cnblogs.com/tylf-lk/p/11287020.html
Copyright © 2011-2022 走看看