ElasticSearch多層nested查詢、nested過濾排除非結果內容
示例mappings 下 fragment 是nested型別,fragment.tagTree也是巢狀型別
"mappings" : {
"properties" : {
"content" : {
"type" : "text",
"analyzer" : "ik_max_custom",
"search_analyzer" : "ik_smart"
},
"id" : {
"type" : "keyword"
},
"fragment" : {
"type" : "nested",
"properties" : {
"content" : {
"type" : "text",
"analyzer" : "ik_max_custom",
"search_analyzer" : "ik_smart"
},
"id" : {
"type" : "integer"
},
"tagTree" : {
"type" : "nested",
"properties" : {
"tag_id" : {
"type" : "integer"
},
"tag_name" : {
"type" : "keyword"
},
"tag_path" : {
"type" : "keyword"
}
}
},
"title" : {
"type" : "text",
"analyzer" : "ik_max_word",
"search_analyzer" : "ik_smart"
}
}
}
}
}
查詢多層巢狀
- 示例
是否計算得分需自行考慮{ "constant_score": { "filter": { "nested": { "path": "fragment", "query": { "nested": { "path": "fragment.tagTree", "query": { "terms": { "fragment.tagTree.tag_id": [927597] } } } } } }, "boost": 0 } }
巢狀過濾結果值
-
例如一個文件,根據fragment.tagTree.tag_id=930365查詢,預期結果是隻有fragment.id=111,不想要fragment.id=222,因為都在一個文件中,如果不過濾那麼結果中會包含id =1這個文件的所有內容
{ "fragment" : [ { "tagTree" : [ { "tag_name" : "北京", "tag_id" : 930365, "tag_path" : "930364" } ], "id" : 111, "content" : "1111", }, { "tagTree" : [ ], "id" : 222, "content" : "2222" } ], "id" : 1, "title" : "示例結果" }
-
操作
- “inner_hits”:可以實現如上結果
- ““inner_hits”: {“size”:0}”:可以實現分類
一個查詢中同一個欄位只能有一個inner_hits
{ "constant_score": { "filter": { "nested": { "path": "fragment", "query": { "nested": { "path": "fragment.tagTree", "query": { "terms": { "fragment.tagTree.tag_id": [111] } } } }, "inner_hits": {} } }, "boost": 0 } }
相關文章
- Elasticsearch 7.x Nested 巢狀型別查詢 | ES 乾貨Elasticsearch巢狀型別
- 關於 Elasticsearch nested field /script 的一些複雜查詢Elasticsearch
- Elasticsearch——filter過濾查詢ElasticsearchFilter
- Elasticsearch 查詢與過濾Elasticsearch
- es針對nested型別資料無法進行過濾查詢的問題記錄型別
- ES查詢之查詢屬性過濾、結果高亮顯示
- mysql查詢結果多列拼接查詢MySql
- [Vue Router] Nested RoutesVue
- mysql多條件過濾查詢之mysq高階查詢MySql
- treevalue——Master Nested Data Like TensorAST
- search(16)- elastic4s-內嵌檔案:nested and joinAST
- DBeaver 匯出多個查詢結果集
- sphinx查詢過濾問題
- Elasticsearch 複合查詢——多字串多欄位查詢Elasticsearch字串
- 34. 過濾條件、多表查詢、子查詢
- Elasticsearch 查詢結果分組統計,聚合檢索(group by stats)Elasticsearch
- elasticsearch之單請求多查詢Elasticsearch
- Elasticsearch 單字串多欄位查詢Elasticsearch字串
- es的查詢和過濾contextContext
- Ms Sql Server查詢儲存過程中的內容SQLServer儲存過程
- 聊聊簡單又不簡單的圖上多跳過濾查詢
- Elasticsearch 第八篇:資料型別 Array、Nested、Object 的設計與應用Elasticsearch資料型別Object
- Elasticsearch查詢Elasticsearch
- nested exception is java.lang.NoSuchMethodException: 實體類.()ExceptionJava
- Java | 靜態巢狀類(Static Nested Class)Java巢狀
- 28、Static Nested Class 和 Inner Class的不同。
- Linux檔案過濾及內容編輯處理命令總結!Linux
- oracle查詢語句查詢增加一列內容Oracle
- JS遞迴過濾樹形結構陣列物件--模糊查詢JS遞迴陣列物件
- JS 根據彙總結果過濾JS
- ES 筆記四十二:物件及 Nested 物件筆記物件
- 資料庫實現原理#1(Nested Loop Join)資料庫OOP
- Elasticsearch複合查詢——boosting查詢Elasticsearch
- 層級查詢並將層級拆分成多列
- Mybatis底層原理學習(三):查詢結果集的處理原理MyBatis
- Elasticsearch 高亮查詢Elasticsearch
- ElasticSearch DSL 查詢Elasticsearch
- DFA演算法之內容敏感詞過濾演算法