苏飞论坛

 找回密码
 马上注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

分布式系统框架(V1.3) 轻松承载百亿数据,千万流量!讨论专区 - 源码下载 - 官方教程

HttpHelper万能框架(V2.3-含.netcore) HttpHelper官方出品,无敌框架讨论区 - 源码下载 - 在线测试和代码生成

HttpHelper爬虫类(V2.0) 最牛的爬虫类,没有爬不到只有想不到 源码 - 代码生成器 - 讨论区 - 教程- 例子

查看: 346|回复: 3

[搜索引擎] 59-Elasticsearch使用嵌套字段排序

[复制链接]
发表于 2019-1-11 08:58:11 | 显示全部楼层 |阅读模式
使用嵌套字段排序

    尽管嵌套字段的值存储于独立的嵌套文档中,但依然有方法按照嵌套字段的值排序。 让我们添加另一个记录,以使得结果更有意思:
[C#] 纯文本查看 复制代码
PUT /my_index/blogpost/2

{

  "title": "Investment secrets",

  "body":  "What they don't tell you ...",

  "tags":  [ "shares", "equities" ],

  "comments": [

    {

      "name":    "Mary Brown",

      "comment": "Lies, lies, lies",

      "age":     42,

      "stars":   1,

      "date":    "2014-10-18"

    },

    {

      "name":    "John Smith",

      "comment": "You're making it up!",

      "age":     28,

      "stars":   2,

      "date":    "2014-10-16"

    }

  ]

}

假如我们想要查询在10月份收到评论的博客文章,并且按照 stars 数的最小值来由小到大排序,那么查询语句如下:
[C#] 纯文本查看 复制代码
GET /_search

{

  "query": {

    "nested": { 

      "path": "comments",

      "filter": {

        "range": {

          "comments.date": {

            "gte": "2014-10-01",

            "lt":  "2014-11-01"

          }

        }

      }

    }

  },

  "sort": {

    "comments.stars": { 

      "order": "asc",   

      "mode":  "min",   

      "nested_path": "comments", 

      "nested_filter": {

        "range": {

          "comments.date": {

            "gte": "2014-10-01",

            "lt":  "2014-11-01"

          }

        }

      }

    }

  }

}

  • 此处的 nested 查询将结果限定为在10月份收到过评论的博客文章。
  • 结果按照匹配的评论中 comment.stars 字段的最小值 (min) 来由小到大 (asc) 排序。
  • 排序子句中的 nested_path 和 nested_filter 和 query 子句中的 nested 查询相同,原因在下面有解释。


我们为什么要用 nested_path 和 nested_filter 重复查询条件呢?原因在于,排序发生在查询执行之后。 查询条件限定了在10月份收到评论的博客文档,但返回的是博客文档。如果我们不在排序子句中加入 nested_filter , 那么我们对博客文档的排序将基于博客文档的所有评论,而不是仅仅在10月份接收到的评论。

发表于 2019-1-11 13:57:10 | 显示全部楼层
发表于 2019-1-11 14:12:50 | 显示全部楼层
发表于 2019-1-15 10:25:00 | 显示全部楼层
您需要登录后才可以回帖 登录 | 马上注册

本版积分规则

QQ|手机版|小黑屋|手机版|联系我们|关于我们|广告合作|苏飞论坛 ( 豫ICP备17001017号-1)

GMT+8, 2019-8-26 15:04

© 2017-2018

快速回复 返回顶部 返回列表