Java查詢ES,普通查詢和巢狀查詢同時存在

2021-09-09 05:24:49 字數 634 閱讀 4820

1、近期開發涉及到了es搜尋引擎的使用,涉及到的資料結構比較複雜,父子結構中還有巢狀查詢。使用的是elasticsearchtemplate設定searchquery對es進行條件查詢。當查詢條件中有普通查詢和巢狀查詢同時存在時,出現了問題:

1.1 所有條件都為nestquerybuilder時,設定的所有條件都會去nested的path去查詢符合條件的資料,當巢狀內容中沒有對應的字段時,查詢出來的資料為0.

1.2 所有條件為普通的querybuilder時,巢狀查詢的內容會不生效。

1.3 當elasticsearchtemplate設定多個query時,query條件會被覆蓋掉,只會儲存最後乙個query,導致查詢的資料不準確。

2、目前的解決辦法是將巢狀查詢的querybuilder設定querybuilders.boolquery().filter,這樣同時設定query和filter。

3、期待遇到更好的解決辦法。

4、補充

4.1 父子結構查詢

4.2 kibana普通查詢和巢狀查詢

get /goods_info/subject/_search

}, },}]

}}}}

]}}}

}}

MySQL 優化巢狀查詢和分頁查詢

巢狀查詢 子查詢 可以使用select語句來建立乙個單列的查詢結果,然後把這個結果作為過濾條件用在另乙個查詢中。巢狀查詢寫起來簡單,也容易理解。但是,有時候可以被更有效率的連線 join 替代。現在假如要找出從來沒有在 中消費的客戶,也就是查詢在客戶customer表中但是不在支付payment表中...

MySQL 優化巢狀查詢和分頁查詢

巢狀查詢 子查詢 可以使用select語句來建立乙個單列的查詢結果,然後把這個結果作為過濾條件用在另乙個查詢中。巢狀查詢寫起來簡單,也容易理解。但是,有時候可以被更有效率的連線 join 替代。現在假如要找出從來沒有在 中消費的客戶,也就是查詢在客戶customer表中但是不在支付payment表中...

sql查詢之巢狀查詢

巢狀查詢也叫子查詢,乙個select語句的查詢結果能夠作為另外乙個語句的輸入值。子查詢不但可以出現在where子句中,也能出現在from中作為乙個臨時表使用,而且還可以出現在select list中,作為乙個欄位值來返回。1 單行子查詢 單行子查詢的返回值只有一行資料。可以再主查詢語句的條件語句中引...