1. 程式人生 > >Elasticsearch之Nested Query

Elasticsearch之Nested Query

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

   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 filteredquery—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

相關推薦

ElasticsearchNested Query

Because nested objects are indexed as separate hidden documents, we can’t query them directly.Instead,     nested object作為一個獨立隱藏文件單獨建索引

ElasticsearchNested Sorting

                                                              It is possible to sort by the value of a nested field, even though the v

ElasticSearch外掛Delete-by-Query

我們通常情況下,刪除es中的文件,使用下面的語句 curl -XDELETE 'localhost:9200/customer/external/2?pretty' 需要指定具體的文件id,一次只能刪除一個文件。當我們想批量刪除文件的時候,該如何操作呢? es提供了外掛,可以將查詢的結果資

Elasticsearch (12)query string的分詞,修改分詞器以及自定義分詞器

query string分詞query string必須以和index建立時相同的analyzer進行分詞query string對exact value和full text的區別對待 (第10節中詳細闡述過)date:exact value_all:full text比如我

Elasticsearchquery與filter

Aggregation聚合 aggregation分為bucket和metric兩種,分別作為詞元劃分和數值計算。其中的bucket aggregation還支援在自身結果的基礎上疊加新的aggregation。這就是aggregation領先於facet的地方。比如實現一

Elasticsearch Filter 與 Query 有啥不同?

今天來了解下 Elasticsearch(以下簡稱 ES) 中的 Query 和 Filter。 在 ES 中,提供了 Query 和 Filter 兩種搜尋: - Query Context:會對搜尋進行相關性算分 - Filter Context:不需要相關性算分,能夠利用快取來獲得更好的效

SharePoint Search(五)Query spelling correction— 查詢拼寫糾正

引擎 dict ati tro 輸入 自己 fault 存在 mark ?? Query spelling correction 在使用搜索引擎的時候。假設一不小心輸入錯誤,或者對於某個詞語記得不太清楚,搜索引擎會自己主動糾正: 這個功能可以縮短用戶的

elasticsearch分詞查詢

elasticsearch使用elk時,search時默認帶有分詞功能,搜索關鍵字並不精準,為方便search查詢,將分詞功能禁用:curl -XPUT http://localhost:9200/_template/template_1 -d ‘{"template" : "*","order":0,"se

Elasticsearch基本操作

ubuntu quest del ubun 存儲 綠色 站點 ear doc elasticsearch是一個是開源的(Apache2協議),分布式的,RESTful的,構建在Apache Lucene之上的的搜索引擎。 它有很多特點例如Schema Free,Docume

慢查詢日誌分析工具pt-query-digest

lan git bash pre 日誌分析 windows images git 所有 curl 簡介 pt-query-digest 是用於分析mysql慢查詢的一個工具,與mysqldumpshow工具相比,py-query_digest 工具的分析結果更

ElasticSearchCURL操作

類型 創建索引 apach 命令格式 ava 開頭 json 文件的 pat CURL的操作 curl是利用URL語法在命令行方式下工作的開源文件傳輸工具,使用curl可以簡單實現常見的get/post請求。簡單的認為是可以在命令行下面訪問url的一個工具。在cent

ElasticsearchpythonAPI簡單使用

words mat napi PE 補全 pro append 要求 port elasticsearch自動補全建議功能 數據入庫操作 ESmapping要求 PUT music { "mappings": { "_doc" : {

阿裏雲ECS安裝配置elasticsearch

是否 ~~ ast span 然而 命令行 在外 一件事 elastics 在這裏只記錄一件事情:elasticsearch 安裝完成後,需要外網訪問9200端口測試是否成功,或者訪問kibana,都需要開放端口,然而貌似阿裏雲是不支持在服務器上直接用命令行來配置的,只能去

優化ElasticSearch合理分配索引分片詳解

大多數ElasticSearch使用者在建立索引時通用會問的一個重要問題是:我需要建立多少個分片? 在本文中, 我將介紹在分片分配時的一些權衡以及不同設定帶來的效能影響. 如果想搞清晰你的分片策略以及如何優化,請繼續往下閱讀. 為什麼要考慮分片數 分片分配是個很重要的概念, 很多使

異常記錄 nested exception is java.lang.NoClassDefFoundError: com/lowagie/text/pdf/PdfContentByte

nested exception is java.lang.NoClassDefFoundError: com/lowagie/text/pdf/PdfContentByte 在MVC 整合jasperreport 的時候.遇到一個問題,老是報 java.lang.NoClassDefFound

SpringBoot + Elasticsearch踩坑記錄

spring boot 1.x支援elasticsearch <5.x elasticsearch安裝:按官網安裝步驟: (1)curl -L -O https://download.elastic.co/elasticsearch/release/org/elasticse

SpringBoot 整合 ElasticSearch ElasticsearchRepository 的 CRUD、分頁介面

一、前言 這裡寫圖片描述 前面使用了 SpringBoot 整合了 Solr: [增刪改查] SpringBoot 整合 Solr 實現 CRUD、分頁介面、高亮顯示 眼下有一個比 Solr 還火熱的 ElasticSearch,主要是用於大資料、分散式系統中,順便使用 SpringBoot

ElasticsearchIK分詞器 java api

一、Elasticsearch分詞 在elasticsearch自帶的分詞器中,對中文分詞是支援的,只是所有的分詞都是按照單字進行分詞的,例如所帶的標準的分詞器standard分詞器,可以按照如下的方式查詢是如何進行分詞的 http://localhost:9200/iktest/_anal

Elasticsearchcat API

一、Cat通用引數 Verbose GET /_cat/XXX/?v 開啟詳細輸出 Help GET /_cat/XXX/?help 輸出可用的列 Hea

Elasticsearch _all

官網:https://www.elastic.co/guide/en/elasticsearch/reference/2.4/mapping-all-field.html#mapping-all-field 最近在使用ELasitcsearch的時候,需要用到關鍵字搜尋,因為是全欄位搜尋,