首页 > 编程语言 > 详细

Elasticsearch复杂搜索(排序、分页、高亮、模糊查询、精确查询)

时间:2020-06-07 10:24:09      阅读:812      评论:0      收藏:0      [点我收藏+]

基础数据准备

这里在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构建查询参数体

技术分享图片

描述

query : 表示查询。

match : 要匹配的条件信息。

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

name :要查询的信息

hits --> total

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

max_source : 最大分值

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

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

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

技术分享图片

3、指定字段排序

技术分享图片

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

age : 根据年龄倒序排列。

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

4、分页

技术分享图片

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

size : 每页显示多少条

5、多条件查询

技术分享图片

使用 boolmustshould 多条件查询。

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

6、不包含某个条件

技术分享图片

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

7、使用 filter 进行数据过滤

技术分享图片

过滤出大于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 进行精确查询:

技术分享图片

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

关于分词:

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

9、高亮查询

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

技术分享图片

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

Elasticsearch复杂搜索(排序、分页、高亮、模糊查询、精确查询)

原文:https://www.cnblogs.com/leizzige/p/13058424.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!