zoukankan      html  css  js  c++  java
  • Elasticsearch复杂搜索(排序、分页、高亮、模糊查询、精确查询)

    基础数据准备

    这里在person索引下创建了四个文档,来进行查询。

    PUT person/_doc/one
    {
      "name":"张三",
      "age":"23",
      "address":"山西"
    }
    
    PUT person/_doc/two
    {
      "name":"李四",
      "age":"24",
      "address":"湖南"
    }
    
    PUT person/_doc/three
    {
      "name":"王五",
      "age":"25",
      "address":"河南"
    }
    
    PUT person/_doc/four
    {
      "name":"王五二号",
      "age":"23",
      "address":"河南"
    }
    

    1、使用JSON构建查询参数体

    image-20200607034712976

    描述

    query : 表示查询。

    match : 要匹配的条件信息。

    match会使用分词器解析!先分析文档,然后再通过分析的文档进行查询。

    name :要查询的信息

    hits --> total

    • value : 查询出两条数据
    • ralation : 关系是eq,相等

    max_source : 最大分值

    hits : 索引和文档的信息,查询出来的结果总数,就是查询出来的具体文档。

    ​ 我们可以根据每个文档的 _source 来判断那条数据更加符合预期结果。

    2、结果过滤,指定查询字段

    image-20200607035640575

    3、指定字段排序

    image-20200607041903593

    sort : 指定字段排序,升序 :asc , 倒序 :desc

    age : 根据年龄倒序排列。

    _source : 由于指定了排序规则,所以 _source 为null。

    4、分页

    image-20200607042321068

    from : 起始页,下标从0开始。

    size : 每页显示多少条

    5、多条件查询

    image-20200607043507389

    使用 boolmustshould 多条件查询。

    must相当于sql中的and,should相当于sql中的or。

    6、不包含某个条件

    image-20200607043832772

    must_not :查询name不包含王五的人。

    7、使用 filter 进行数据过滤

    image-20200607044354610

    过滤出大于23岁小于26的人数据。

    • gt : 大于
    • gte : 大于等于
    • lt:小于
    • lte:小于等于

    8、精确查询

    准备数据

    --创建item索引库,指定字段类型
    PUT item
    {
      "mappings": {
        "properties": {
          "name": {
            "type": "text"
          },
          "description": {
            "type": "keyword"
          }
        }
      }
    }
    
    PUT item/_doc/ITEM001
    {
      "name":"java从入门到吃土",
      "description":"java从入门到吃土介绍"
    }
    PUT item/_doc/ITEM002
    {
      "name":"java从入门到放弃",
      "description":"java从入门到放弃介绍"
    }
    
    GET item/_doc/_search
    

    使用 term 进行精确查询:

    image-20200607050818911

    term 标签是直接通过倒排索引指定的词条进行精确查询的!

    关于分词:

    • term : 直接查询精确的值
    • match : 会使用分词器解析!先分析文档,然后再通过分析的文档进行查询

    9、高亮查询

    使用 highlight 高亮查询并且自定义高亮字段。

    image-20200607052333684

    将查询条件王五高亮显示,并且自定义高亮标签。

  • 相关阅读:
    bash脚本入门
    DNS 递归查询
    场景题
    利用 python 发送邮件(qq 邮件)
    Swagger 简单使用
    Nginx支持HTTPS,生成SSL证书
    使用 Python 搭建简易HTTP服务器
    扫码登陆原理
    【积累】在jQuery.Validate额中使用可以传入参数的message
    关于RUBY处理多语言转字符编码的一点经验 nkf
  • 原文地址:https://www.cnblogs.com/leizzige/p/13058424.html
Copyright © 2011-2022 走看看