zoukankan      html  css  js  c++  java
  • 使用kibana操作elasticsearch(es)

    1、安装kibana

    2、kibana的修改配置

    3、开始配合es进行文档的增删查改

    4、补充说明以及注意事项


    先进行安装kibana:

      先下载kibana,再解压

    修改配置文件:

    vim config/kibana.yml
    
    # 放开注释,将默认配置改成如下:
    
    server.port: 5601
    server.host: "0.0.0.0"
    elasticsearch.url: "http://192.168.202.128:9200"
    kibana.index: ".kibana"
    

     

    先进行elasticsearch的启动,完成后,再去kibana服务器使用root用户,进行kibana的启动:

    在bin目录下:
    
        ./kibana

    在浏览器上输入当前服务器的IP地址+端口号(5601):

    开始操作:

    打开dev Tools:

     获取所有数据:

      GET /_search

    返回结果中的数据的含义:

    1 took:耗费了几毫秒
    2 timed_out:是否超时,false是没有,默认无timeout
    3 _shards:shards fail的条件(primary和replica全部挂掉),不影响其他shard。默认情况下来说,一个搜索请求,会打到一个index的所有primary shard上去,当然了,每个primary shard都可能会有一个或多个replic shard,所以请求也可以到primary shard的其中一个replica shard上去。
    4 hits.total:本次搜索,返回了几条结果
    5 hits.max_score:score的含义,就是document对于一个search的相关度的匹配分数,越相关,就越匹配,分数也高
    6 hits.hits:包含了匹配搜索的document的详细数据,默认查询前10条数据,按_score降序排序
    7 ————————————————
    8 版权声明:本文为CSDN博主「东天里的冬天」的原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接及本声明。
    9 原文链接:https://blog.csdn.net/gwd1154978352/article/details/82804942

       

       timeout这边默认是没有的,也就意味着当你搜索的时候也会知道所有搜索结束才会返回结果,但是

    当我们做一些时间比较敏感的搜索的时候,等待时间很久,对用户来说是非常不友好的,那我们可以

    通过设置timeout这个值来定时返回已经搜索到的数据。 timeout机制,指定每个shard,就只能在timeout时间范围

    内,将搜索到的部分数据(也可能是搜索到的全部数据),直接返回给client,而不是等到所有数据全部

    搜索出来后再返回。

      可以通过以下方式进行设置:

    1 timeout=10ms,timeout=1s,timeout=1m
    2 GET /_search?timeout=10m

    开始创建Document:

     1 PUT /ecommerce/product/1
     2 {
     3     "name" : "gaolujie yagao",
     4     "desc" :  "gaoxiao meibai",
     5     "price" :  30,
     6     "producer" :      "gaolujie producer",
     7     "tags": [ "meibai", "fangzhu" ]
     8 }
     9 PUT /ecommerce/product/2
    10 {
    11     "name" : "jiajieshi yagao",
    12     "desc" :  "youxiao fangzhu",
    13     "price" :  25,
    14     "producer" :      "jiajieshi producer",
    15     "tags": [ "fangzhu" ]
    16 }
    17 PUT /ecommerce/product/3
    18 {
    19     "name" : "zhonghua yagao",
    20     "desc" :  "caoben zhiwu",
    21     "price" :  40,
    22     "producer" :      "zhonghua producer",
    23     "tags": [ "qingxin" ]
    24 }

    进行增删改查:

      1 #2.查询
      2 GET /ecommerce/product/2
      3 
      4 #3.覆盖,替换文档(全量替换)
      5 PUT /ecommerce/product/1
      6 {
      7   "name" : "jiaqiangban gaolujie yagao",
      8   "desc" : "gaoxiao meibai",
      9   "price" : 30,
     10   "producer" : "gaolujie producer",
     11   "tags" : [ "meibai" , "fangzhu" ]
     12 }
     13 

    注意:1.document是不可变的,如果要修改document的内容,可以通过全量替换,直接对document
      重新建立索引,替换里面所有的内容。
       2.es会将老的document标记为deleted(逻辑删除),然后新增我们给定的一个document,当我们
      创建越来越多的document的时候,es会在适当的时机在后台自动删除(物理删除)标记为deleted
      的document。
       3.替换必须带上所有的field,否则其他数据会丢失。

    14 #4.修改(更新文档) 15 POST /ecommerce/product/1/_update 16 { 17 "doc" : { 18 "name" : "jiaqianban gaolujie yagao1" 19 } 20 } 21 22 #5.删除文档 23 DELETE /ecommerce/product/2 24

    注意:在删除一个document之后,我们可以从侧面证明,它不是立即物理删除的,因为它的一些版本号信息还是保留的
    25 #6.使用query DSL 请求查询 26 GET /ecommerce/product/_search 27 { 28 "query" : { 29 "match_all" : {} 30 } 31 } 32 #6.1查询名称包含yaogao的商品,同时按照价格降序排列 33 GET /ecommerce/product/_search 34 { 35 "query" : { 36 "match" : { 37 "name" : "yagao" 38 } 39 }, 40 "sort" : [ 41 { "price" : "desc"} 42 ] 43 } 44 45 #6.2分页查询 46 #总共3条商品,假设每页就显示1条商品,现在显示第2页,所以就查出来第2个商品 47 GET /ecommerce/product/_search 48 { 49 "query" : { "match_all" : {}}, 50 "from" : 1, 51 "size" : 1 52 } 53 54 #6.3指定查询项 55 GET /ecommerce/product/_search 56 { 57 "query" : {"match_all" : {}}, 58 "_source" : ["name", "price"] 59 } 60 61 #6.4过滤查询 62 #搜索商品名称包含yaogao,而且售价大于25元的商品 63 GET /ecommerce/product/_search 64 { 65 "query" : { 66 "bool" : { 67 "must" : { 68 "match" : { 69 "name" : "yagao" 70 } 71 }, 72 "filter" : { 73 "range" : { 74 "price": {"gt" : 25} 75 } 76 } 77 } 78 } 79 } 80 81 #7.ull-text search(全文检索) 82 GET /ecommerce/product/_search 83 { 84 "query" : { 85 "match" : { 86 "producer": "yagao producer" 87 } 88 } 89 } 90 91 #8.phrase search(短语搜索) 92 GET /ecommerce/product/_search 93 { 94 "query" : { 95 "match_phrase" : { 96 "producer" : "yagao producer" 97 } 98 } 99 } 100 101 #9.多条件查询 102 #名字中有"yagao",描述上可以有fangzhu也可以没有,价格不能是25元 103 104 GET /ecommerce/_search 105 { 106 "query" : { 107 "bool" : { 108 "must" : [ 109 { 110 "match" : { 111 "name" : "yagao" 112 } 113 } 114 ], 115 "should" : [ 116 { 117 "match" : { 118 "desc" : "fangzhu" 119 } 120 }, 121 { 122 "match" : { 123 "desc" : "caoben" 124 } 125 } 126 ], 127 "must_not" : [ 128 { 129 "match" : { 130 "price" :25 131 } 132 } 133 ], 134 "minimum_should_match" : 1 135 } 136 } 137 }

    在以上的实例中:

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

    两种请求分类: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都成立,务必注意格式。

    乾坤未定,你我皆是黑马
  • 相关阅读:
    Postgresql HStore 插件试用小结
    postgres-xl 安装与部署 【异常处理】ERROR: could not open file (null)/STDIN_***_0 for write, No such file or directory
    GPDB 5.x PSQL Quick Reference
    postgresql 数据库schema 复制
    hive 打印日志
    gp与 pg 查询进程
    jquery table 发送两次请求 解惑
    python 字符串拼接效率打脸帖
    postgresql 日期类型处理实践
    IBM Rational Rose软件下载以及全破解方法
  • 原文地址:https://www.cnblogs.com/liuqijia/p/11507494.html
Copyright © 2011-2022 走看看