当前位置: 首页 > news >正文

网站建设协网页空间租用

网站建设协,网页空间租用,如何创办一个网站,微网站的特点目录 1.elasticsearch概述 3.springboot集成elasticsearch 4.实现搜索并高亮关键词 1.elasticsearch概述 #xff08;1#xff09;是什么#xff1a; Elasticsearch 是位于 Elastic Stack 核心的分布式搜索和分析引擎。 Lucene 可以被认为是迄今为止最先进、性能最好的…目录 1.elasticsearch概述 3.springboot集成elasticsearch 4.实现搜索并高亮关键词 1.elasticsearch概述 1是什么 Elasticsearch 是位于 Elastic Stack 核心的分布式搜索和分析引擎。 Lucene 可以被认为是迄今为止最先进、性能最好的、功能最全的搜索引擎库。但Lucene 只是一个基于java下的库需要使用 Java 并要将其集成到你的应用中才可进行使用。而Elasticsearch 则是基于Lucene 下实现的开源搜索引擎。 Elasticsearch 基于分布式进行实时文件存储每个字段都被索引并可被搜索并可进行实时分析。同事由于基于分布式可以扩展到上百台服务器处理PB级结构化或非结构化数据。 2核心概念 elasticsearch可归类于NoSQL的一种其主要包含index索引、type类型elasticsearch 7.x后已被舍弃、Document文档、Fields字段。 类比于MySQL如下 其实现的核心在于倒排索引 指的是将文档内容中的单词作为索引将包含该词的文档 ID 作为记录。 一般的sql中都是正排索引即以表中的唯一标识id作为索引通过主键索引找到文档其他内容具体请参考mysql存储结构。 而elasticsearch通过关键字作为索引反向找到文档ID可以高效的实现全文检索。 如我们有以下两条记录 idcontentwriter1这是一条测试数据测试elasticsearchseven2这是第二条、测试数据试一下elasticsearch搜索seven 以上两条数据在mysql中id为主键当我们以elasticsearch以关键词搜索去搜查所有和elasticsearch有关的content时在没有为content建索引的情况下无法走主键索引mysql会进行全表检索效率一般。 而elasticsearch中会为content建立倒排索引根据content找到对应的id返回搜索结果效率快鱼mysql。并且整个搜索过程中我们不需要做任何文本的模糊匹配。 3应用场景 ElasticSearch作为一个便于使用的分布式全文搜索引擎常被用于各种搜索场景中 维基百科百度等搜索引擎对关键词和内容概要进行匹对并对搜索的关键词进行高亮。电商平台对关键词和商品名称、标题进行匹配并对对搜索的关键词进行高亮。论坛对关键词和帖子内容及评论等快速匹配并对搜索关键词进行高亮。 总之言之 ElasticSearch是一个优秀的检索工具可以对各类内容进行快速检索并返回结果 检索关键词并进行高亮 一般情况我们会在数据存入数据库前把需要检索的字段作为ElasticSearch的索引和需要返回的数据存入ElasticSearch比如电商平台达到商品标题然后在搜索时使用ElasticSearch进行全文检索快速返回相关结果。 3.springboot集成elasticsearch 下面对springboot集成elasticsearch进行演示 pom依赖文件 propertiesjava.version1.8/java.versionelasticsearch.version7.6.1/elasticsearch.version/propertiesdependencies!-- fastjson --dependencygroupIdcom.alibaba/groupIdartifactIdfastjson/artifactIdversion1.2.70/version/dependency!-- ElasticSearch --dependencygroupIdorg.springframework.boot/groupIdartifactIdspring-boot-starter-data-elasticsearch/artifactId/dependency!-- web --dependencygroupIdorg.springframework.boot/groupIdartifactIdspring-boot-starter-web/artifactId/dependency!-- lombok 需要安装插件 --dependencygroupIdorg.projectlombok/groupIdartifactIdlombok/artifactIdoptionaltrue/optional/dependency!-- test --dependencygroupIdorg.springframework.boot/groupIdartifactIdspring-boot-starter-test/artifactIdscopetest/scope/dependency/dependencies 此处需要注意的是springboot自带的ElasticSearch版本为6.8.5 如果你使用的是其他版本的ElasticSearch请注意指定版本号。 config配置文件对ElasticSearch进行连接 Configuration public class ElasticSearchConfig {Beanpublic RestHighLevelClient restHighLevelClient(){RestHighLevelClient client new RestHighLevelClient(RestClient.builder(new HttpHost(127.0.0.1,9200,http)));return client;} } 至此我们皆可以通过 RestHighLevelClient 对ElasticSearch进行使用。 4.实现搜索并高亮关键词 下面对 ElasticSearch进行使用进行查询并高亮关键词。 首先我们建立索引user并存入以下数据 然后我们在业务类编写查询方法 //查询public ListUser searchUserByKeyword(String keyword,int pageNo,int pageSize) throws IOException {if (pageNo1){pageNo1;}//条件查询SearchRequest searchRequest new SearchRequest(user);SearchSourceBuilder searchSourceBuilder new SearchSourceBuilder();//分页searchSourceBuilder.from(pageNo);searchSourceBuilder.size(pageSize);//匹配关键词类似于模糊查询//MatchQueryBuilder queryBuilder QueryBuilders.matchQuery(sign,keyword);//组合查询BoolQueryBuilder queryBuilder QueryBuilders.boolQuery();//and查询所有条件都要符合 or查询可以使用queryBuilder.shouldqueryBuilder.must(QueryBuilders.matchQuery(sign,keyword));queryBuilder.must(QueryBuilders.matchQuery(statue,use));//精确匹配//TermQueryBuilder queryBuilder QueryBuilders.termQuery(sign,keyword);searchSourceBuilder.query(queryBuilder);//设置高亮//highlightBuilder.requireFieldMatch(false); //只需要高亮第一个searchSourceBuilder.highlighter(new HighlightBuilder().field(sign));//执行searchRequest.source(searchSourceBuilder);SearchResponse response restHighLevelClient.search(searchRequest, RequestOptions.DEFAULT);//解析结果ListUser list new ArrayList();for (SearchHit hit: response.getHits().getHits()){//解析高亮字段MapString, HighlightField highlightFields hit.getHighlightFields();HighlightField sign highlightFields.get(sign);//获取原字段MapString, Object oldUser hit.getSourceAsMap();//将高亮替换原字段内容StringBuilder stringBuilder new StringBuilder();if (sign!null){Text[] texts sign.fragments();for (Text t:texts){stringBuilder.append(t);}log.info(替换stringBuilder);oldUser.put(sign,stringBuilder.toString());}User user JSONObject.parseObject(hit.getSourceAsString(),User.class);user.setSign(oldUser.get(sign).toString());list.add(user);}return list;} ElasticSearch的match配置是拆字匹配即关键词为“测试”那么会查询出所有目标字段中包含“测”和“试”任一字符的结果若为“java”则不会对字母进行拆分会保持整个单词完整。 上述代码需要注意的是高亮的字段必须是查询的字段才可以对查询的关键词进行高亮处理否则高亮字段会为空。 编写controller进行测试 RestController public class SearchController {Resourceprivate SearchService searchService;GetMapping(/test)public ListUser test(RequestParam(keyword)String keyword) throws IOException {return searchService.searchUserByKeyword(keyword,0,5);} } 结果 成功查询所有sign包含java关键词且statue为use的用户并对java关键词进行高亮em标签需要使用html进行解析。 拓展 1ElasticSearch还可以对搜索结果进行排序 searchSourceBuilder.sort(age); 上述代码即根据age字段对搜索结果进行排序。 2过滤查询条件 BoolQueryBuilder queryBuilder QueryBuilders.boolQuery();//过滤statue!use的数据queryBuilder.filter(QueryBuilders.matchPhraseQuery(statue,use));//过滤age不大于20的数据queryBuilder.filter(QueryBuilders.rangeQuery(age).gt(20)); 具体还有很多查询条件具体可参考ElasticSearch官网文档。
http://www.hkea.cn/news/14444304/

相关文章:

  • 阳泉企业网站建设公司人力资源公司注册条件
  • 太原经济型网站建设价格h5制作软件 知乎 推荐
  • 宁波做网站的哪个好经营一个小型app多少钱
  • 怎么建商业网站怎样找到网站后台入口
  • 站酷魔方网站建设中注册深圳公司恒诚信流程
  • 网站本地环境搭建软件职业培训学校加盟
  • 潍坊网站建设服务商深圳做网站推广哪家好
  • 公众号怎么编辑制作seo平台是什么
  • 小企业做网站有用吗中山做网站服务好
  • 重庆做网站有哪些医馆网站建设方案
  • 建设一个网站需要做哪些事情怎么把网站上线
  • 手机建设网站赚钱网站的产品图片怎样做清晰
  • 哪个网站网页做的好看阜阳做网站多少钱
  • 传奇新开服网站汽车网新车报价大全
  • 省厅网站建设招标天河做网站平台
  • 厦门外贸推广站长工具seo客户端
  • 微信网站开发服务网上做娱乐广告的网站
  • 个人网站模板代码百度怎么发布短视频
  • 做的好的家装网站wordpress打开慢
  • 网站如何做流媒体ASP网站开发教程实验总结
  • 备案时网站名称可以重复吗安徽百度seo教程
  • 网站规划与设计为什么不建议做运维
  • 网页制作工具的选择与网站整体风格是有关系吗怎么做自动发卡网站
  • 枣庄专业做网站网站留言效果怎么做
  • 建站行业转型电销外包团队在哪找
  • 网站 二级域名需要备案吗南宁网站建设招聘
  • 大气简洁企业通用网站模板wordpress主页html下划线
  • 蚌埠做网站wordpress做cms
  • 微能力者恶魔网站谁做的建设网站地图素材
  • 迅速提高网站排名虚拟主机的概念和功能