zoukankan      html  css  js  c++  java
  • Elastisearch在kibana下常用命令总结

    1、获取所有数据

    GET  /_search

    2、创建一个Document

    PUT /ecommerce/product/1
    {
        "name" : "gaolujie yagao",
        "desc" :  "gaoxiao meibai",
        "price" :  30,
        "producer" :      "gaolujie producer",
        "tags": [ "meibai", "fangzhu" ]
    }
    
    PUT /ecommerce/product/2
    {
        "name" : "jiajieshi yagao",
        "desc" :  "youxiao fangzhu",
        "price" :  25,
        "producer" :      "jiajieshi producer",
        "tags": [ "fangzhu" ]
    }
    PUT /ecommerce/product/3
    {
        "name" : "zhonghua yagao",
        "desc" :  "caoben zhiwu",
        "price" :  40,
        "producer" :      "zhonghua producer",
        "tags": [ "qingxin" ]
    }

    3、检索文档查询

    GET /ecommerce/product/1

    4、替换文档(全量替换)

    PUT /ecommerce/product/1
    {
        "name" : "jiaqiangban gaolujie yagao",
        "desc" :  "gaoxiao meibai",
        "price" :  30,
        "producer" :      "gaolujie producer",
        "tags": [ "meibai", "fangzhu" ]
    }

    5、更新文档(_update)

    POST /ecommerce/product/1/_update
    {
      "doc":
        {
          "price":70
        }
    }

    6、删除文档

    DELETE /ecommerce/product/1

    注意:在删除一个Document之后,它不是立即物理删除的,因为它的版本等信息还保留着

    二、请求分类

    1、query string search
    
    类似这种 搜索全部商品:GET /ecommerce/product/_search(参数直接拼接在请求url上,不带json参数的)
    query string search的由来,因为search参数都是以http请求的query string来附带的
    搜索商品名称中包含yagao的商品,而且按照售价降序排序:GET /ecommerce/product/_search?q=name:yagao&sort=price:desc
    适用于临时的在命令行使用一些工具,比如curl,快速的发出请求,来检索想要的信息;但是如果查询请求很复杂,是很难去构建的,所以在生产环境中,几乎很少使用query string search
    2、query DSL
    
    DSL:Domain Specified Language,特定领域的语言
    http request body:请求体,可以用json的格式来构建查询语法,比较方便,可以构建各种复杂的语法,比query string search肯定强大多了。
    
    实例一:查询所有的商品

    GET ecommerce/product/_search
    {
      "query":
        {
          "match_all": {}
        }
    }

    实例二:查询名称包含yaogao的产品,同时按照价格进行降序排序

    GET ecommerce/product/_search
    {
      "query": {
        "match": {
          "name": "yaogao"
        }
      },
      "sort": [
        {
          "price":"desc"
        }
      ]
    }

    3、分页查询
    总共3条商品,假设每页就显示1条商品,现在显示第1页,所以就查出来第1个商品

    GET ecommerce/product/_search
    {
      "query": {
        "match_all": {}
      }, 
      "from": 0,
      "size": 1
    }

    4、查询指定项

    GET ecommerce/product/_search
    {
      "query": {
        "match_all": {}
      },
      "_source": ["name","price"]
    }

    5、过滤查询

    搜索商品名称包含yagao,而且售价大于25元的商品

    GET ecommerce/product/_search
    {
      "query": {
        "bool": {
          "must": {
              "match" : {
                "name" : "yagao" }
          },
          "filter": {
            "range": {
              "price": {
                "gte": 25
              }
            }
          }
        }
      }
    }

    6、full-text search(全文检索)

    全文检索会将输入的搜索串拆解开来,去倒排索引里面去一一匹配,只要能匹配上任意一个拆解后的单词,就可以作为结果返回

    GET ecommerce/product/_search
    {
      "query": {
        "match": {
          "producer": "yagao producer"
        }
      }
    }

    7、phrase search(短语搜索)

    phrase search,要求输入的搜索串,必须在指定的字段文本中,完全包含一模一样的,才可以算匹配,才能作为结果返回

    GET ecommerce/product/_search
    {
      "query": {
        "match_phrase": {
          "producer": "jiajieshi producer"
        }
      }
    }

    8、多条件查询

    名字中有"yagao",描述上可以有fangzhu也可以没有,价格不能是25元
    
    must表示一定要满足;
    
    should表示可以满足也可以不满足;
    
    must_not表示不能满足该条件;
    
    "minimum_should_match": 1,表示最小匹配度,可以设置为百分百,详情看源文档Elasticsearch Reference [6.4] » Query DSL » Minimum Should Match,
    设置了这个值的时候就必须满足should里面的设置了,另外注意这边should里面同一字段设置的多个值(意思是当这个值等于X或者等于Y的时候都成立,务必注意格式)
    GET /ecommerce/_search
    {
      "query": {
        "bool": {
          "must": [
            {
              "match": {
               "name": "yagao"
              }
            }
          ],
          "should": [
            {
              "match": {
                "desc": "fangzhu"
              }
            },
            {
              "match": {
                "desc": "caoben"
              }
            }
          ],
          "must_not": [
            {
              "match": {
                "price": 25
              }
            }
          ],
         "minimum_should_match": 1
        }
      }
    }

    multi-index和multi-type搜索模式

    告诉你如何一次性搜索多个index和多个type下的数据

    /_search:所有索引,所有type下的所有数据都搜索出来

    /index1/_search:指定一个index,搜索其下所有type的数据

    /index1,index2/_search:同时搜索两个index下的数据

    /test1_*,test2_*/_search:按照通配符去匹配多个索引

    /index1/type1/_search:搜索一个index下指定的type的数据

    /index1/type1,type2/_search:可以搜索一个index下多个type的数据

    /index1,index2/type1,type2/_search:搜索多个index下的多个type的数据

    /_all/type1,type2/_search:_all,可以代表搜索所有index下的指定type的数据

  • 相关阅读:
    vue-cil和webpack中本地静态图片的路径问题解决方案
    vue-cil 中的配置分析
    webpack中mainifest.js vendor.js app.js 三者的区别
    css 中可以继承的属性
    有关正则表达式的Js方法(replace)
    css 常用的几种垂直居中(包括图片)
    如何在Vue中建立全局引用或者全局命令
    删除数组中多个不连续的数组元素的正确姿势
    数据库
    代码片段
  • 原文地址:https://www.cnblogs.com/yfb918/p/10695257.html
Copyright © 2011-2022 走看看