亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 編程 > JavaScript > 正文

Elasticsearch實現復合查詢高亮結果功能

2019-11-19 10:50:29
字體:
來源:轉載
供稿:網友

一.Es的配置

實現es的全文檢索功能的第一步,首先從與es進行連接開始,這里我使用的是es的5.x java api語法.

public TransportClient esClient() throws UnknownHostException{    Settings settings = Settings.builder()        .put("cluster.name", "my-application") //節點的名字        .put("client.transport.sniff", true)        .build();        InetSocketTransportAddress iAddress = new InetSocketTransportAddress( //連接es的ip地址和端口號        InetAddress.getByName("127.0.0.1"),9300        );        //根據先前的配置生成client,后面的操作基本都是基于這個    TransportClient client = new PreBuiltTransportClient(settings)        .addTransportAddress(iAddress);    return client;  }

二.功能的實現

以下是全文檢索的核心代碼,包括我遇到的錯誤以及解決,包括如何對高亮失效,高亮不全等的解決.

1.查詢條件

 TransportClient esClient = esClient();  //獲取先前生成的client    BoolQueryBuilder boolQuery = QueryBuilders.boolQuery(); //生成復合查詢構造器        boolQuery.mustNot(        QueryBuilders.matchQuery("",) //字段必須不包含啥         );        boolQuery.should(        QueryBuilders.matchQuery(, )  //字段可以包含啥,相當于或者        );    boolQuery.must(        QueryBuilders.matchQuery(,) //字段必須包含啥        );

2.高亮條件

//配置標題高亮顯示    HighlightBuilder highlightBuilder = new HighlightBuilder(); //生成高亮查詢器    highlightBuilder.field(title);   //高亮查詢字段    highlightBuilder.field(content);  //高亮查詢字段    highlightBuilder.requireFieldMatch(false);   //如果要多個字段高亮,這項要為false    highlightBuilder.preTags("<span style=/"color:red/">");  //高亮設置    highlightBuilder.postTags("</span>");    //下面這兩項,如果你要高亮如文字內容等有很多字的字段,必須配置,不然會導致高亮不全,文章內容缺失等    highlightBuilder.fragmentSize(800000); //最大高亮分片數    highlightBuilder.numOfFragments(0); //從第一個分片獲取高亮片段

3.查詢配置

// 根據字段進行排序,這里我根據時間進行倒排FieldSortBuilder timeSort = SortBuilders.fieldSort("time").order(SortOrder.DESC);          //查詢請求生成    SearchRequestBuilder requestBuilder = esClient.prepareSearch(indexname)//索引名字            .setTypes(indextype)   //索引類型            .setQuery(boolQuery)   //配置查詢條件            .addSort(new ScoreSortBuilder())  //根據查詢相關度進行排序            .addSort(timeSort)         //再根據時間進行排序            .setTrackScores(true)       //避免分頁之后相關性亂了            .highlighter(highlightBuilder)   //配置高亮            .setFrom(from)         //設置分頁            .setSize();

4.獲取查詢結果對其高亮

   

 //獲取查詢結果    SearchResponse searchResponse = requestBuilder.get();    List<Map<String, Object>> course = new ArrayList<>();     if(searchResponse.status() != RestStatus.OK){      return course;    }    for(SearchHit hit:searchResponse.getHits()){      //獲取高亮字段      Map<String, HighlightField> highlightFields = hit.getHighlightFields();      HighlightField titleField = highlightFields.get("");      HighlightField contentField = highlightFields.get("");      Map<String, Object> source = hit.getSource();      //千萬記得要記得判斷是不是為空,不然你匹配的第一個結果沒有高亮內容,那么就會報空指針異常,這個錯誤一開始真的搞了很久      if(titleField!=null){        Text[] fragments = titleField.fragments();         String name = "";        for (Text text : fragments) {        name+=text;        }        source.put("", name);  //高亮字段替換掉原本的內容        }      course.add(source);    }    esClient.close();   //用完記得關閉    return course;

三.結語

這樣前端所獲取結果的搜索內容將會被<span style="color:red;"></span>所包含,比如我前端是微信小程序,所以直接獲取內容進行渲染的話,就是一堆字符串,所以用的是小程序的富文本標簽<rich-text>.

總結

以上所述是小編給大家介紹的Elasticsearch實現復合查詢高亮結果功能,希望對大家有所幫助,如果大家有任何疑問請給我留言,小編會及時回復大家的。在此也非常感謝大家對武林網網站的支持!
如果你覺得本文對你有幫助,歡迎轉載,煩請注明出處,謝謝!

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
亚洲国产精久久久久久| 在线日韩第一页| 人人爽久久涩噜噜噜网站| 69影院欧美专区视频| 97精品国产97久久久久久免费| 国产日本欧美一区| 神马久久桃色视频| 欧美极品在线视频| 日韩在线视频免费观看| 亚洲欧美变态国产另类| 一区二区亚洲精品国产| 精品久久久久久久大神国产| 91美女高潮出水| 日韩视频免费在线| 亚洲第一网站男人都懂| 自拍偷拍亚洲区| 欧美巨乳在线观看| 最新中文字幕亚洲| xxav国产精品美女主播| 国产999视频| 2018中文字幕一区二区三区| 精品久久中文字幕| 亚洲精品福利在线观看| 亚洲精品www久久久| 日韩精品久久久久久福利| 91精品91久久久久久| 国产欧美精品久久久| 欧美日韩精品国产| 亚洲精品国产精品国产自| 成人xxxx视频| 午夜免费日韩视频| 国产欧美一区二区三区在线看| 91亚洲精品在线| 麻豆乱码国产一区二区三区| 欧美最猛性xxxxx(亚洲精品)| 国产精品久久久久91| 91免费国产视频| 国产日韩欧美视频在线| 欧美激情a∨在线视频播放| 自拍亚洲一区欧美另类| 91在线中文字幕| 国产精品揄拍500视频| 亚洲第一视频网站| 欧美疯狂做受xxxx高潮| 亚洲一区二区在线播放| 欧美性猛xxx| 久久亚洲国产成人| 国产精品自产拍在线观看| 日本一区二区在线播放| 亚洲精品一区二三区不卡| 久久久久女教师免费一区| zzijzzij亚洲日本成熟少妇| 欧美性猛交xxxx免费看| 国产日韩在线看片| 日韩成人在线电影网| 久久久国产一区二区| 亚洲午夜性刺激影院| 欧美综合在线第二页| 91高潮在线观看| 久久久精品一区二区| 夜夜嗨av一区二区三区免费区| 亚洲中国色老太| 欧美激情精品在线| 18性欧美xxxⅹ性满足| 日韩一区二区福利| 91性高湖久久久久久久久_久久99| 97精品欧美一区二区三区| 91精品国产成人| 亚洲黄色有码视频| 在线观看国产精品淫| 亚洲国产欧美一区二区丝袜黑人| 久久91亚洲人成电影网站| 热久久这里只有精品| 在线丨暗呦小u女国产精品| 8050国产精品久久久久久| 91精品免费看| 亚洲欧美另类在线观看| 欧美最顶级的aⅴ艳星| 红桃视频成人在线观看| 久久精品美女视频网站| 亚洲精品福利免费在线观看| 福利二区91精品bt7086| 精品福利一区二区| 亚洲国产又黄又爽女人高潮的| 中文字幕亚洲第一| 精品无人区乱码1区2区3区在线| 久久久成人av| 日韩最新免费不卡| 成人a在线观看| 神马久久桃色视频| 97在线视频免费观看| 欧美激情奇米色| 久久精品亚洲国产| 亚洲自拍小视频免费观看| 欧美孕妇与黑人孕交| 亚洲男人天堂久| 欧美成人激情视频免费观看| 日韩高清电影免费观看完整版| 亚洲影影院av| 久久视频在线直播| 亚洲天堂av在线播放| 亚洲国产精品成人精品| 亚洲第一色中文字幕| 海角国产乱辈乱精品视频| 亚洲一区二区久久久| 亚洲乱码国产乱码精品精| 欧美另类xxx| 人体精品一二三区| 97精品国产97久久久久久春色| 久久777国产线看观看精品| 日韩a**站在线观看| 精品亚洲一区二区三区四区五区| 精品人伦一区二区三区蜜桃免费| 亚洲激情小视频| 久久久久久久久电影| 国产精品91视频| 成人免费大片黄在线播放| 日韩国产在线播放| 97人人做人人爱| 欧美美女15p| 欧美日韩国产成人在线| 久久久午夜视频| 国产免费一区二区三区香蕉精| 国产视频久久网| 久久久久久亚洲精品| 亚洲午夜未满十八勿入免费观看全集| 久久久精品亚洲| 国产精品劲爆视频| 国产一区二区久久精品| 疯狂欧美牲乱大交777| 日韩综合视频在线观看| 中文字幕欧美在线| 国产精品∨欧美精品v日韩精品| 欧美国产亚洲视频| 欧美洲成人男女午夜视频| 日av在线播放中文不卡| 成人免费xxxxx在线观看| 91夜夜揉人人捏人人添红杏| 日韩精品极品视频免费观看| 亚洲qvod图片区电影| 亚洲美女喷白浆| 国产精品午夜视频| 日韩中文字幕视频在线观看| 欧美黑人巨大精品一区二区| 亚洲成人精品久久久| 欧美国产精品va在线观看| 成人福利视频网| 国产精品va在线播放我和闺蜜| 亚洲第一区在线| 亚洲已满18点击进入在线看片| 国产在线精品成人一区二区三区| 欧美黄色性视频| 午夜精品在线观看| 亚洲最大成人在线| 91在线观看免费网站| 亚洲免费视频网站| 欧美在线观看视频| 4438全国亚洲精品在线观看视频| 日本乱人伦a精品| 91福利视频网| 日韩中文字幕网站| 亚洲成人亚洲激情| 91精品免费久久久久久久久| 国产亚洲精品va在线观看|