在使用 Elasticsearch 進行查詢時,有時候需要查找 json 中嵌套的內容。這時我們就需要用到嵌套對象的查詢。嵌套對象可以理解為一個 json 內的一個對象,該對象可能包含其他對象或字段。
下面是一個例子:在一個公司中,每個員工的信息都以 json 格式進行存儲,其中嵌套了一個 job 對象。我們需要查找某一部門內所有 job 為 engineer 的員工。
GET /employees/_search { "query": { "nested": { "path": "job", "query": { "bool": { "must": [ { "match": { "job.title": "engineer" } } ] } } } } }
上述查詢中,我們使用了 nested 查詢。其中,path 指定了嵌套的對象路徑,即 "job"。在 query 中,我們使用了 bool 查詢的 must 子句,表示查詢結果必須符合以下條件:在 job 對象內,title 字段必須為 "engineer"。
使用嵌套查詢時,需要注意以下幾點:
- 嵌套查詢會對性能產生一定的影響,因此應該盡量避免嵌套過深。
- 嵌套查詢只能應用于類型為 nested 的字段上。
- 在索引映射中,需要明確指定嵌套字段的屬性和類型。