Elasticsearch之Nested Sorting

翻译 2015年04月16日 17:42:21
                                                    

                                                      (这是一个小系列:请戳:ElasticsearchNested(嵌套)系列,查看其他nested相关文章)


         It is possible to sort by the value of a nested field, even though the value exists in a separate nested document. To make the result 

more interesting, we will add another record:

  尽管存在于独立的nested文本内,基于nested字段的值排序还是可行的。为了让结果更有意思,让我们增加其他的记录:

curl -XPUT 'localhost:9200/my_index/blog/2' -d '
{
  "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"
    }
  ]
}

             Imagine that we want to retrieve blog posts that received comments in October, ordered by the lowest number of stars that each blog

 post received. The search request would look like this:

设想我们想要检索在10月份被评论的博客文章,同时按每篇文章收到的最低星级排序。检索请求应该类似如下:

curl -XPUT 'localhost:9200/_search' -d '
{
  "query":{
     "nested":{
	    "path":"comments",
		"filter":{
		   "range":{
		      "comments.date":{
			      "gte":"2014-10-01",
				  "lt":"2014-11-01"
			  }
		   }
		}
	 }
  },
  "sort":{
     "comments.stars":{
	     "order":"asc",
		 "mode": "min",
		 "nested_filter":{
		     "range":{
			    "comments.date":{
				   "gte":"2014-10-01",
				   "lt":"2014-11-01"
				}
			 }
		 }
	 }
  }
}

           Why do we need to repeat the query conditions in the nested_filter? The reason is that sorting happens after the query has been executed. 

The query matches blog posts that received comments in October, but it returns blog post documents as the result. If we didn’t include the 

nested_filter clause, we would end up sorting based on any comments that the blog post has ever received, not just those received in October.

         为什么我们要在nested_filter内重复查询条件?原因是排序发生在查询执行结束后。查询匹配10月收到评论的博客文章,但是它返回博客文章

文本作为结果。如果我们不包括nested_filter语块,那么最终会基于返回的博客文章的所有评论进行排序,而不是在10月份收到的评分。

(!!!根据自己有限的elasticsearch使用经验,这点非常值得各位读者重视!!!)


原文:http://www.elastic.co/guide/en/elasticsearch/guide/current/nested-sorting.html



ElasticSearch基础命令应用

手动创建索引与配置映射,动态映射和模板,简单操作:1. 插入数据2. 删除数据3. 更新数据4. 索引别名;基本查询等
  • 2016年09月02日 15:06

Elasticsearch nested sort filter 嵌套排序问题及解决

官方解释首先来看一下官方文档:Sorting by Nested Fields 看不懂的没关系,它其实就只有两句是有用的,就是那两段代码。索引PUT /my_index/blogpost/2 { ...
  • zhanlanmg
  • zhanlanmg
  • 2015-10-20 20:02:10
  • 9892

Elasticsearch之Nested Query

Because nested objects are indexed as separate hidden documents, we can’t query them directly.Instea...
  • Allenalex
  • Allenalex
  • 2015-04-16 09:12:58
  • 6966

elasticsearch之sorting and relevance

默认情况下,es中的返回结果是根据relevance排序的,相关性最强的结果在最前边。接下来我们会介绍相关性是什么意思,是如何计算的?但是,我们先把焦点放在sort这个参数上,看看如何使用 1:so...
  • jingkyks
  • jingkyks
  • 2015-01-20 16:56:34
  • 892

Elasticsearch嵌套式对象Nested分析

nested结构是Elasticsearch提供关系存储的一种特殊的结构,是NOSQL的一种高级特性,在传统的关系型sql中,很难做到一行记录中存储某个实体以及附属的内容,比如某个用户下评论数据,或某...
  • u012332735
  • u012332735
  • 2017-03-15 14:13:12
  • 10338

elasticsearch聚合案例--分组、求最大值再求最大值的均值

#一、需求 A、B、C代表3个用户,第二列代表各自的得分,求A、B、C的最好成绩以及A、B、C最好成绩的均值A 10 A 11 A 13 B 11 B 11 B 12 C 10 C 10 C 11 ...
  • napoay
  • napoay
  • 2017-07-12 20:23:03
  • 2699

Elasticsearch之Nested(嵌套)系列

1.Elasticsearch之Nested Object 2.Elasticsearch之Nested Object Mapping 3.Elasticsearch之Nested ...
  • Allenalex
  • Allenalex
  • 2015-04-14 16:54:27
  • 12155

Elasticsearch之Nested Object

Given the fact that creating, deleting, and updating a single document in Elasticsearch is atomic, i...
  • Allenalex
  • Allenalex
  • 2015-04-14 16:46:18
  • 11802

elasticsearch中的精准文本位置匹配

在elasticsearch中,将长篇幅的文档划分为树形结构的段落后,有助于文本的精准位置匹配, 例如:原来的content是这样的: content = "一、大标题 \n 1. 一级标题 \n...
  • yuan882696yan
  • yuan882696yan
  • 2016-11-09 10:07:30
  • 990

Elasticsearch : array of innner object vs. nested object

为了克服 Arrays of Inner Objects 扁平化内部对象丢失对象内部数据之间的关联信息的不足,Elasticsearch提供了Nested object。Nested object把每...
  • quicknet
  • quicknet
  • 2015-10-14 02:43:11
  • 7570
收藏助手
不良信息举报
您举报文章:Elasticsearch之Nested Sorting
举报原因:
原因补充:

(最多只允许输入30个字)