Kibana结合es的使用

安装包解压后运行kibana.bat(es已经运行的情况下):http://localhost:5601/
在这里插入图片描述

ES文档操作

es是面向文档的,存储文档的同时对其进行索引使其能被搜索到。
1.创建文档:

PUT /lxy/demo1/1
{
  "id":1,
  "username":"张三"
}

2.读取文档:

//返回全部数据
GET /lxy/demo1/1
//返回部分数据
GET /lxy/demo1/1?_source=username

3.更新文档:
上传操作在将要被上传的文档已存在的情况下(通过文档id是否相同来判断)将会变成修改操作

//全局更新,如果你更新的时候漏写了字段,就会被覆盖,相当于全局覆盖
POST /lxy/demo1/1
{
  "id":1,
  "username":"王五" 
}
//局部更新
POST /lxy/demo1/1/_update
{
  "doc": {
    "id": 1,
    "username": "lisi"
  }
}

两者区别是局部更新不会删除已有的但是更新中没有写的字段,它会保持原样
4.删除文档:

DELETE /lxy/demo1/1

5.批量读取文档:

//ids相当于存id的数组,可以存多个文档id
GET lxy/demo1/_mget
{
  "ids":["1"]
}

6.分页搜索文档:

GET /lxy/_search?size=1&from=0

7.查询字符串搜索:

GET /lxy/demo1/_search?q=id:1

DSL查询与过滤

又es提供的专门的查询语句就叫DSL查询与过滤
需要传入query、from等参数用于查询

GET /lxy/demo1/_search
{
  "query": {
    "match_all": {}
  },
  "from": 0,
  "size": 10,
  "_source": [
    "id",
    "username"
  ]
}
GET /lxy/demo1/_search
{
  "query": {
    "match": {
      "username": "马六"
    }
  }
}

GET /lxy/demo1/_search
{
  "query": {
    "wildcard": {
        "username": "马*"
    }
  }
}

关于过滤和查询,过滤结果可用于后续查询,过滤性能高于查询,一般是先过滤再查询
查询和过滤通过bool组合,查询用must、should或must not来表示,过滤用filter来表示
match会分词,term不会,match分词后会分别找到其对应的文档,并给出排序分数

GET _search
{
  "query": {
    "bool": {
      "must": [
        {
          "match": {
            "username": "马六 王五"
          }
        }
      ]
    }
  }
}
//比如这里会先过滤id为1的,再查询马六王五
GET _search
{
  "query": {
    "bool": {
      "must": [
        {
          "match": {
            "username": "马六 王五"
          }
        }
      ],
      "filter": {
        "term": {
          "id": "1"
        }
      }
    }
  }
}

分词器与映射

分词器
在全文检索理论中,文档的查询是通过关键字查询文档索引来进行匹配,因此将文本拆分为有意义的单词,对于搜索结果的准确性至关重要,因此,在建立索引的过程中和分析搜索语句的过程中都需要对文本串分词。

ES的文档映射(mapping)机制用于进行字段类型确认,将每个字段匹配为一种确定的数据类型
这两个比较常见:text(分词),keyword(不分词)
text默认为全文文本,keyword默认为非全文文本

//查看指定类型的映射
GET /lxy/demo1/_mapping

ES在没有配置Mapping的情况下新增文档,ES会尝试对字段类型进行猜测,并动态生成字段和类型的映射关系。
在这里插入图片描述
映射
如何自定义映射,记住要先修改映射再添加数据

delete lxy

put lxy

post /lxy/demo1/_mapping
{
  "demo1": {
    "properties": {
      "price": {
        "type": "long"
      },
      "name": {
        "type": "text",
        "analyzer": "ik_smart",
        "search_analyzer": "ik_smart"
      }
    }
  }
}

get /lxy/demo1/_mapping
//全局映射
PUT _template/global_template
{
  "template":   "*",
  "settings": { "number_of_shards": 1 }, 
  "mappings": {
    "_default_": {
      "_all": { 
        "enabled": false
      },
      "dynamic_templates": [
        {
          "string_as_text": { 
            "match_mapping_type": "string",
            "match":   "*_text",
            "mapping": {
              "type": "text",
              "analyzer": "ik_max_word",
              "search_analyzer": "ik_max_word",
              "fields": {
                "raw": {
                  "type":  "keyword",
                  "ignore_above": 256
                }
              }
            }
          }
        },
        {
          "string_as_keyword": {  
            "match_mapping_type": "string",
            "mapping": {
              "type": "keyword"
             }
          }
        }
      ]
    }
  }}
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值