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 nested sort filter 嵌套排序问题及解决

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

Elasticsearch嵌套式对象Nested分析

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

Elasticsearch排序

当你发送请求至elasticsearch,返回文档默认按文档得分降序排序,这是通常我们想要了,然而,有时候我们希望能改变这种排序方式...
  • wangnan9279
  • wangnan9279
  • 2017年03月29日 16:50
  • 647

Elasticsearch之Nested Aggregation

(这是一个小系列:请戳:Elasticsearch之Nested(嵌套)系列,查看其他nested相关文章)              In the same way as we need to u...
  • Allenalex
  • Allenalex
  • 2015年04月16日 20:52
  • 5449

Elasticsearch Fields _source 返回值字段设置

官方文档:Managing Elasticsearch Fields When SearchingElasticsearch返回值字段设置要想最大限度提高Elasticsearch的性能,控制搜索请求...
  • zhanlanmg
  • zhanlanmg
  • 2015年10月21日 15:32
  • 15874

ElasticSearch – nested mappings and filters

还有一个情况下,我们需要帮助ElasticSearch了解我们的数据结构,以便能够充分进行查询 - 复杂对象数组的时候。 按理说的ElasticSearch的最佳功能之一是,它使我们能够索引...
  • zxjiayou1314
  • zxjiayou1314
  • 2016年11月18日 16:13
  • 309

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
  • 10602

Elasticsearch之Nested Object Mapping

Setting up a nested field is simple—where you would normally specify type object, make it type neste...
  • Allenalex
  • Allenalex
  • 2015年04月15日 14:00
  • 3584

Elasticsearch之Nested(嵌套)系列

1.Elasticsearch之Nested Object 2.Elasticsearch之Nested Object Mapping 3.Elasticsearch之Nested ...
  • Allenalex
  • Allenalex
  • 2015年04月14日 16:54
  • 11145

Elasticsearch嵌套式对象Nested分析

nested结构是Elasticsearch提供关系存储的一种特殊的结构,是NOSQL的一种高级特性,在传统的关系型sql中,很难做到一行记录中存储某个实体以及附属的内容,比如某个用户下评论数据,或某...
  • u012332735
  • u012332735
  • 2017年03月15日 14:13
  • 7671
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Elasticsearch之Nested Sorting
举报原因:
原因补充:

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