kibana操作elasticsearch快速上手

es在windows上安装注意kibana与elasticsearch与ik分词器版本号保持一致(6.6.0版本)

ES下载地址:Past Releases of Elastic Stack Software | Elastic

IK分词器下载地址:https://github.com/medcl/elasticsearch-analysis-ik/releases

kibana下载地址:https://www.elastic.co/cn/downloads/past-releases/#kibana

一.es整合ik

将es压缩包解压,在es的D:\environments\elasticsearch-6.6.0\plugins路径下新建文件夹ik,将ik分词器解压到es中ik目录下.

二.启动es

双击D:\environments\elasticsearch-6.6.0\bin下的elasticsearch.bat

验证是否启动成功

http://localhost:9200/

三.kibana连接es

在D:\environments\kibana-6.6.0-windows-x86_64\config中的kibana.yml中添加

server.port: 5601 server.host: "localhost" elasticsearch.url: "http://127.0.0.1:9200" kibana.index: ".kibana"

四.启动kibana

双击D:\environments\kibana-6.6.0-windows-x86_64\bin中kibana.bat

打开页面

http://localhost:5601

五.数据测试

#1.开始创建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" ]
}

#2.查询
GET /ecommerce/product/2

#3.覆盖,替换文档(全量替换)
PUT /ecommerce/product/1
{
  "name" : "jiaqiangban gaolujie yagao",
  "desc" : "gaoxiao meibai",
  "price" : 30,
  "producer" : "gaolujie producer",
  "tags" : [ "meibai" , "fangzhu" ]
}
#注意:1.document是不可变的,如果要修改document的内容,可以通过全量替换,直接对document重新建立索引,替换里面所有的内容。2.es会将老的document标记为deleted(逻辑删除),然后新增我们给定的一个document,当我们创建越来越多的document的时候,es会在适当的时机在后台自动删除(物理删除)标记为deleted的document。3`替换必须带上所有的field,否则其他数据会丢失。

#4.修改(更新文档)
POST /ecommerce/product/1/_update
{
  "doc" : {
    "name" : "jiaqianban gaolujie yagao1"
  }
}

#5.删除文档
DELETE /ecommerce/product/2
#注意:在删除一个document之后,我们可以从侧面证明,它不是立即物理删除的,因为它的一些版本号信息还是保留的

#6.使用query DSL 请求查询
GET /ecommerce/product/_search
{
  "query" : {
    "match_all" : {}
  }
}

#6.1查询名称包含yaogao的商品,同时按照价格降序排列
GET /ecommerce/product/_search
{
  "query" : {
    "match" : {
      "name" : "yagao"
    }
  },
  "sort" : [
    { "price" : "desc"}
    ]
}

#6.2分页查询
#总共3条商品,假设每页就显示1条商品,from是页码
GET /ecommerce/product/_search
{
  "query" : { "match_all" : {}},
  "from" : 0,
  "size" : 1
}

#6.3指定查询项
GET /ecommerce/product/_search
{
  "query" : {"match_all" : {}},
  "_source" : ["name", "price"]
}


#6.4过滤查询
#搜索商品名称包含yaogao,而且售价大于35元的商品
GET /ecommerce/product/_search
{
  "query" : {
    "bool" : {
      "must" : {
        "match" : {
          "name" : "yagao"
      }
  },
  "filter" : {
    "range" : {
      "price": {"gt" : 35}
        }
      }
    }
  }
}

#7.full-text search(全文检索)
GET /ecommerce/product/_search
{
  "query" : {
    "match" : {
      "producer": "yagao producer"
    }
  }
}


#8.phrase search(短语搜索)
GET /ecommerce/product/_search
{
  "query" : {
    "match_phrase" : {
      "producer" : "yagao producer"
    }
  }
}


#9.多条件查询
#名字中有"yagao",描述上可以有fangzhu也可以没有,价格不能是25元
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
    }
  }
}

在以上的实例中:

  从第六条开始需要做出的补充:

两种请求分类:query string search  /  query DSL

第一种:

        类似搜索全部商品: GET /ecommerce/product/_search (参数直接拼接在请求上,不带json参数的)

        query  string search的由来,因为search参数都是以http请求的query string来附带的。

        搜索商品名称中包含yagao的商品,而且按照售价降序排列:

        GET /ecommerce/product/_search?q=name:yagao&sort=price:desc

        适用于临时的在命令行使用一些工具,比如curl,快速的发出请求,来检索想要的信息;但是

        如果查询请求很复杂,是很难去构建的,所以在生产环境中,几乎很少使用query string search。

第二种:

        DSL:Domain Specified Language,特定领域的语言

        http request body:请求体,可以用json的格式来构建查询语法,比较方便,可以构建各种复杂的语法,比query string search肯定强大太多了。

full-text search 全文检索)和  phrase search(短语搜索)的区别:

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

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

多条件查询中的字段描述:

  must:  表示一定要满足;

  should:  表示可以满足也可以不满足;

  must_not:  表示不能满足该条件;

  minimum_should_match:1    :表示最小匹配度,可以设置为百分之百,设置了这个值的时候就必须满足should里面的设置了,另外注意这边should里面同一字段设置的多个值,意思是当这个值等于X或者等于Y都成立,务必注意格式。

mysql之间的对比

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值