ES 父子文件查詢

2022-03-27 03:53:58 字數 1453 閱讀 3634

1. 父/子文件是完全獨立的。

2. 父文件更新不會影響子文件。

3. 子文件更新不會影響父文件或者其它子文件。

put /company

, //

父文件 type

"employee":

}}}

2. 父文件的索引和普通文件索引一樣。

post /company/branch/_bulk

}

3. 子文件索引必須指定其對應的父文件 id,作用:

put /company/employee/1?parent=london     //

指定 id = london 的父文件

4. 如果要更改文件的父文件,不能僅僅 update 或者 reindex 舊文件(新的父文件可能在不同分片上),需要先刪除舊文件再重新索引。

看到 parent-child 關係,我們很容易想到的是像 sql 那樣的各種 join 操作——比如查詢某個文件並一併取回所有的父或子文件等。

然而,es 中不支援類似的 join 查詢。即便 child aggregation 也不能做到像 sql 那樣的 join 操作!

在 es 中的 parent-child 關係基本可以理解為是乙個過濾條件,如下:

//

查詢某文件,只有該文件有"父文件"且滿足一定條件才算匹配

}}

//如果滿足以上條件,hit 該文件}//

查詢某文件,只有該文件有"子文件"且滿足一定條件才算匹配

}}

//如果滿足以上條件,hit 該文件

}

1. has_child:基於子文件的內容,查詢父文件

//

請求 get /company/branch/_search}}

}}//結果,

"hits": }]

}}

2. has_parent:基於父文件的內容,查詢子文件

//

請求 get /company/employee/_search}}

}}//結果 ,

"hits": }]

}}

3. children aggregation:對關聯的 child 文件進行聚合操作

//

請求 get /company/branch/_search

,

"aggs

": ,

"aggs": }}

}}}}}

//結果

"aggregations": ]}

}}]}

}

es 父子查詢 es父子文件建立查詢

一 準備 1,elasticsearch 5.6.9 2,kibana 5.6.9 3,jdk1.8 二 建立索引,文件 1建立資料庫put database?pretty station stationname 三 填充資料 插入父文件一條記錄 插入id 1的6路post database lin...

es父子結構查詢 ES 系列3 ES 檢索原理

索引原理 磁碟io與預讀 倒排索引 fst索引是加速資料查詢的重要手段,其核心原理是通過不斷的縮小想要獲取資料的範圍來篩選出最終想要的結果,同時把隨機的事件變成順序的事件。也就是說,有了這種索引機制,我們可以總是用同一種查詢方式來鎖定資料。磁碟io程式設計中非常高昂的操作,也是影響程式效能的重要因素...

ES索引文件

索引文件 通過使用 index api 文件可以被 索引 儲存和使文件可被搜尋 但是首先,我們要確定文件的位置。正如我們剛剛討論的,乙個文件的 index type 和 id 唯一標識乙個文件。我們可以提供自定義的 id值,或者讓 index api 自動生成。如果你的文件有乙個自然的 識別符號 例...