Elasticsearch之Nested Query

翻译 2015年04月16日 09:12:58

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

Because nested objects are indexed as separate hidden documents, we can’t query them directly.Instead, 

we have to use the nested query or nested filter to access them:

   nested object作为一个独立隐藏文档单独建索引,因此,我们不能直接查询它们。取而代之,我们必须使用nested查询或者nested filter来接触它们:

curl -XGET 'localhost:9200/my_index' -d '
{
  "query":{
     "bool":{
	    "must":[
		   {"match":{"title":"eggs"}},
		   {
		     "nested":{
			    "path":"comments",
				"query":{
				   "bool":{
				      "must":[
					     {"match":{"comments.name":"john"}},
						 {"match":{"comments.age":28}}
					  ]
				   }
				}
			 }
		   }
		]
	 }
  }
}

   A nested field can contain other nested fields. Similarly, a nested query can contain other nested queries. 

The nesting hierarchy is applied as you would expect.

   一个nested字段可以包含其他的nested 字段。相似地,一个nested查询可以包含其他nested查询。只要你希望,你就可以使用嵌套层。

  Of course, a nested query could match several nested documents. Each matching nested document would have its own

relevance score, but these multiple scores need to be reduced to a single score that can be applied to the root document.

  当然,一个nested查询可以匹配多个nested文本。每个匹配的nested文本都有它自己相关评分,但是这些评分必须归为一个总分应用于根文本上。

  By default, it averages the scores of the matching nested documents. This can be controlled by setting the score_mode 

parameter to avg, max, sum, or even none (in which case the root document gets a constant score of 1.0).

  默认会平均所有匹配的nested文本的分数。当然,也可以通过设定score_modec参数为avg,max,sum,或者甚至为none(根文本获得一致评分1.0)

 

curl -XGET 'localhost:9200/my_index' -d '
{
  "query":{
     "bool":{
	    "must":[
		   {"match":{"title":"eggs"}},
		   {
		     "nested":{
			    "path":"comments",
				"score_mode":"max",
				"query":{
				   "bool":{
				      "must":[
					     {"match":{"comments.name":"john"}},
						 {"match":{"comments.age":28}}
					  ]
				   }
				}
			 }
		   }
		]
	 }
  }
}

   nested filter behaves much like a nested query, except that it doesn’t accept the score_mode parameter. It can

be used only in filter context—such as inside a filtered query—and it behaves like any other filter: 

it includes or excludes, but it doesn’t score.

一个nested过滤行为和一个nested 查询非常像,除了它不接受score_mode。它只会用在过滤场景中——比如一个过滤查询中——它的行为同样类似其他过滤:

要么包括,要么不包括,不会评分。


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

ElasticSearch基础命令应用

-
  • 1970年01月01日 08:00

Elasticsearch嵌套式对象Nested分析

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

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

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

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

对Relationship Queries 的理解(nested query)

Relationship Queries 在关系查询中,存在一对多和多对一的关系。因为就会出现两种查询情况。 在解释查询关系之前,需要理解一下Relationship Name,如文档中con...
  • gaofly89
  • gaofly89
  • 2015-04-03 15:06:53
  • 610

elasticsearch__4__java操作之QueryBuilders构建搜索Query

内容涉及代码GitHub地址:https://github.com/xiaohulu/util_xiaohulu/tree/master/src/com/elasticsearch 官方API:h...
  • u011278496
  • u011278496
  • 2014-07-16 14:33:25
  • 28276

elasticsearch java实现类似sql group by

elasticsearch java实现sql查询
  • xr568897472
  • xr568897472
  • 2017-06-28 09:41:18
  • 2672

Elasticsearch java API (18)Aggregations 聚合 Bucket

桶聚合编辑 全球聚合编辑 下面是如何使用 Global Aggregation 与Java API。 准备聚合请求编辑 这里有一个例子关于如何创建聚合的要求:A...
  • u012116196
  • u012116196
  • 2016-06-30 14:20:01
  • 5214

java操作elasticsearch使用QueryBuilders进行数据查询

ElasticSearch是一个基于Lucene的搜索服务器。它提供了一个分布式多用户能力的全文搜索引擎,基于RESTful web接口。Elasticsearch是用Java开发的,并作为Apach...
  • alan_liuyue
  • alan_liuyue
  • 2017-10-26 15:41:19
  • 669
收藏助手
不良信息举报
您举报文章:Elasticsearch之Nested Query
举报原因:
原因补充:

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