elasticsearch JAVA用戶端操作---搜尋的過濾、分組高亮

來源:互聯網
上載者:User

標籤:

elasticsearch        提供的API比較多,看名字差不多可以明白什麼意思


源碼地址:源碼下載點擊

public void search01() {QueryBuilder query = QueryBuilders.queryString("9");// 設定搜尋的內容和現實的大小SearchResponse res = client.prepareSearch("test").setQuery(query).setFrom(0).setSize(60).execute().actionGet();SearchHits shs = res.getHits();System.out.println("總共有資料:" + shs.getHits().length);for (SearchHit it : shs) {System.out.println(it.getSource());}}// 分組fact類似於sql的grouppublic void search02() {// 定義一個分組並為其命名TermsFacetBuilder facetBuilder = FacetBuilders.termsFacet("groupBysex");// 按照哪個欄位進行分組facetBuilder.field("sex").size(1);// 過濾器匹配所有檔案facetBuilder.facetFilter(FilterBuilders.matchAllFilter());SearchResponse res = client.prepareSearch("test2").setTypes("test02").addFacet(facetBuilder).execute().actionGet();// 擷取搜尋結果中的分組Facets facet = res.getFacets();// 多個分組是以map的形式儲存TermsFacet fac = (TermsFacet) facet.getFacets().get("groupBysex");for (TermsFacet.Entry tf : fac.entries()) {System.out.println(tf.getCount() + "======" + tf.getTerm());}}// QUERYpublic void search03() {// 按照欄位進行索引,只要內容含有即可不用全部符合QueryBuilder queryBuilder = QueryBuilders.fieldQuery("name","李四1後面有內容也可以");//整個 資料內容中只要 有 這個字即可QueryBuilder qb =QueryBuilders.queryString("四");        //組合查詢 name為 張三,sex為boy的記錄 must表示必須有,mustNot表示不包含,should表示可以存在QueryBuilder queryBuilder2 = QueryBuilders.fieldQuery("name","張三");QueryBuilder queryBuilder3 = QueryBuilders.fieldQuery("sex","boy");QueryBuilder qbmust = QueryBuilders.boolQuery().must(queryBuilder2).should(queryBuilder3);//過濾查詢QueryBuilder qb3 = QueryBuilders.filteredQuery(queryBuilder2,                FilterBuilders.prefixFilter("sex", "bo")                );SearchResponse res = client.prepareSearch("test").setTypes("test01").setSearchType(SearchType.DEFAULT).setQuery(qb3).execute().actionGet();SearchHits shs = res.getHits();System.out.println("共查到資料:" + shs.getHits().length);for (SearchHit it : shs) {System.out.println(it.getSource());}}// 高亮顯示public void search04() {//首碼過濾器 漢字不好用FilterBuilder fb =  FilterBuilders.prefixFilter("sex", "bo");//範圍過濾FilterBuilder fb2 =   FilterBuilders.rangeFilter("id").from(1).to(10);  //組合過濾FilterBuilder fb3 =  FilterBuilders.andFilter(                  FilterBuilders.rangeFilter("id").from(1).to(10),                  FilterBuilders.prefixFilter("sex", "bo")          ).cache(true);//預設false  SearchResponse res = client.prepareSearch("test").setTypes("test01").setSearchType(SearchType.DFS_QUERY_THEN_FETCH).setFilter(fb3).execute().actionGet();SearchHits shs = res.hits();System.out.println("總共有資料:" + shs.getHits().length);for (SearchHit it : shs) {System.out.println(it.getSource());}}// 高亮顯示public void search05() {QueryBuilder qb1 = QueryBuilders.termQuery("name", "張三_4");// FilterBuilder filter =FilterBuilders.prefixFilter("name", "張三");SearchResponse res = client.prepareSearch("test4").setTypes("test04").setSearchType(SearchType.DFS_QUERY_THEN_FETCH).setQuery(QueryBuilders.fieldQuery("id", "1")).addHighlightedField("id").setHighlighterPreTags("<spand>").setHighlighterPostTags("</bod>").execute().actionGet();SearchHits shs = res.hits();System.out.println("總共有資料:" + shs.getHits().length);for (SearchHit it : shs) {System.out.println(it.getSource());// 擷取對應的高亮域Map<String, HighlightField> result = it.highlightFields();// 從設定的高亮域中取得指定域HighlightField titleField = result.get("id");// 取得定義的高亮標籤String[] titleTexts = titleField.fragments();// 為title串值增加自訂的高亮標籤String title = "";for (String text : titleTexts) {title += text;}// 將追加了高亮標籤的串值重新填充到對應的對象// product.setTitle(title);// 列印高亮標籤追加完成後的實體物件System.out.println(title);}}


elasticsearch JAVA用戶端操作---搜尋的過濾、分組高亮

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.