亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

使用 Java 高級 REST 客戶端進行 ElasticSearch 多術語查詢

使用 Java 高級 REST 客戶端進行 ElasticSearch 多術語查詢

侃侃爾雅 2023-09-27 14:34:51
java -high-level-rest-client提供了一種使用代碼下方顯示的術語在 elasticsearch 上進行搜索的方法SearchSourceBuilder sourceBuilder = new SearchSourceBuilder();  sourceBuilder.query(QueryBuilders.termQuery("user", "kimchy"));但我想對多個字段進行查詢,如下所示:“user”=“kimchy”和/或“city”=“london”。我看到多重搜索查詢和多重匹配查詢,但它們沒有執行我想要的操作。謝謝您的幫助!!
查看完整描述

2 回答

?
12345678_0001

TA貢獻1802條經驗 獲得超5個贊

嘗試這個:


BoolQueryBuilder boolQueryBuilder = QueryBuilders.boolQuery();

boolQueryBuilder

    .filter(QueryBuilders.termQuery("user", "kimchy"))

    .filter(QueryBuilders.termQuery("city", "london"));

SearchSourceBuilder sourceBuilder = new SearchSourceBuilder();

sourceBuilder.query(boolQueryBuilder);

的filter/must/should方法BoolQueryBuilder,取決于你想要哪個上下文,如果你想要“或”,你可以使用should。


查看完整回答
反對 回復 2023-09-27
?
森林海

TA貢獻2011條經驗 獲得超2個贊

大家可以試試這個。


BooleanQuery.Builder booleanQuery = new BooleanQuery.Builder();

            foreach (var term in (s + ',' + t).Split(','))

            {

                booleanQuery.add(new TermQuery(new Term("content", term)), BooleanClause.Occur.SHOULD);

            }

            //booleanQuery.add(new TermQuery(new Term("content", s)), BooleanClause.Occur.MUST);

            //booleanQuery.add(new TermQuery(new Term("content", t)), BooleanClause.Occur.MUST);

            TopDocs hits = searcher.search(booleanQuery.build(), int.MaxValue);


查看完整回答
反對 回復 2023-09-27
  • 2 回答
  • 0 關注
  • 123 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號