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

网站策划与建设阶段的推广的目标住房和城乡建设部网站园林一级

网站策划与建设阶段的推广的目标,住房和城乡建设部网站园林一级,济南网络推广软件公司,门户网站建设发展趋势在springboot中集成Elasticsearch#xff0c;以我开发的博客系统项目为例,这是一篇文章内容。 准备 本次Elasticsearch使用的是单机版#xff0c;版本为6.7.8#xff0c;并且装好中文分词器。 Springboot集成Elasticsearch 首先在pom文件中引入Elasticsearch依赖。 !-…在springboot中集成Elasticsearch以我开发的博客系统项目为例,这是一篇文章内容。 准备 本次Elasticsearch使用的是单机版版本为6.7.8并且装好中文分词器。 Springboot集成Elasticsearch 首先在pom文件中引入Elasticsearch依赖。 !--elasticsearch--dependencygroupIdorg.springframework.boot/groupIdartifactIdspring-boot-starter-data-elasticsearch/artifactId/dependency创建一个对象与数据库存储结构字段对应使用Data是导入了lombok Document(indexName “article_document”, type “docs”, shards 1, replicas 0)这个注解会在elasticsearch里面创建一个article_document的索引。Id 注解为elasticsearch的id字段。 类型type 每个文档都有与之对应的类型type定义。这允许用户在一个索引中存储多种文档类型并为不同文档提供类型提供不同的映射。 分片shards# 代表索引分片es可以把一个完整的索引分成多个分片这样的好处是可以把一个大的索引拆分成多个分布到不同的节点上。构成分布式搜索。分片的数量只能在索引创建前指定并且索引创建后不能更改。5.X默认不能通过配置文件定义分片 副本replicas# 代表索引副本es可以设置多个索引的副本副本的作用一是提高系统的容错性当个某个节点某个分片损坏或丢失时可以从副本中恢复。二是提高es的查询效率es会自动对搜索请求进行负载均衡。 Data Document(indexName article_document, type docs, shards 1, replicas 0) public class ArticleDocument implements Serializable {Idprivate Long id;Field(type FieldType.Text, analyzer ik_max_word)private String title; //标题Field(type FieldType.Text, analyzer ik_max_word)private String summary;// 概述Field(type FieldType.Text, analyzer ik_max_word)private String content; // 内容Field(type FieldType.Boolean)private Boolean published;//是否已发布Field(type FieldType.Integer)private Integer status;//审核状态public interface Table {String ID id;String TITLE title;String SUMMARY summary;String CONTENT content;String PUBLISHED published;String STATUS status;} }写一个接口ArticleDocumentRepository继承ElasticsearchRepositoryElasticsearchRepository包含了基本的增删改查的能力并在接口类上加上Repository注解注入到spring 容器中. Repository public interface ArticleDocumentRepository extends ElasticsearchCrudRepositoryArticleDocument, Long {ListArticleDocument findDistinctByTitleLikeOrSummaryLikeOrContentLike(String title, String summary, String content); } ArticleDocumentServiceImpl类自动注入ArticleDocumentRepository的接口去操作Elasticsearch。 Autowiredprivate ArticleDocumentRepository articleDocumentRepository;接着就对Elasticsearch进行增删改查的操作。 保存 我是用了mybatis-plus可以根据自己修改在保存文章的时候调用这个方法Article是我的文章对象。 public void saveToElasticSearch(Article article) {ArticleDocument articleDocument new ArticleDocument();BeanUtils.copyProperties(article, articleDocument);if (articleDocument.getPublished() null) {QueryWrapperArticle wrapper new QueryWrapper();wrapper.select(Article.Table.PUBLISHED).eq(Article.Table.ID, article.getId());Article temp articleMapper.selectOne(wrapper);articleDocument.setPublished(temp.getPublished());}if (articleDocument.getStatus() null) {QueryWrapperArticle wrapper new QueryWrapper();wrapper.select(Article.Table.STATUS).eq(Article.Table.ID, article.getId());Article temp articleMapper.selectOne(wrapper);articleDocument.setStatus(temp.getStatus());}articleDocumentRepository.save(articleDocument);}更新 先将原来的索引删除掉 //从ElasticSearch中删除articleDocumentRepository.deleteById(article.getId());再保存新的索引 saveToElasticSearch(article);删除 articleDocumentRepository.deleteById(article.getId());查询 将查询的结果用List返回。 public ListArticleDocument listByKeyword(String keyword) throws IOException {SearchRequest searchRequest new SearchRequest(TableConstant.ARTICLE_DOCUMENT);//匹配查询SearchSourceBuilder sourceBuilder new SearchSourceBuilder();MultiMatchQueryBuilder multiMatchQueryBuilder QueryBuilders.multiMatchQuery(keyword, ArticleDocument.Table.TITLE, ArticleDocument.Table.SUMMARY, ArticleDocument.Table.CONTENT);TermQueryBuilder termQueryBuilder1 QueryBuilders.termQuery(ArticleDocument.Table.PUBLISHED, true);TermQueryBuilder termQueryBuilder2 QueryBuilders.termQuery(ArticleDocument.Table.STATUS, Constant.AUDIT_PASS);BoolQueryBuilder boolQueryBuilder QueryBuilders.boolQuery().must(multiMatchQueryBuilder).must(termQueryBuilder1).must(termQueryBuilder2);sourceBuilder.query(boolQueryBuilder);//高亮HighlightBuilder highlightBuilder new HighlightBuilder();highlightBuilder.field(ArticleDocument.Table.TITLE).field(ArticleDocument.Table.SUMMARY).field(ArticleDocument.Table.CONTENT);highlightBuilder.preTags(Constant.HIGH_LIGHT_PRE_TAGS);highlightBuilder.postTags(Constant.HIGH_LIGHT_POST_TAGS);sourceBuilder.highlighter(highlightBuilder);//执行搜索searchRequest.source(sourceBuilder);SearchResponse searchResponse restHighLevelClient.search(searchRequest, RequestOptions.DEFAULT);//解析结果ListArticleDocument articleDocuments new ArrayList();for (SearchHit hit : searchResponse.getHits().getHits()) {MapString, Object map hit.getSourceAsMap();//原来的结果//解析高亮的字段HighLightUtil.parseField(hit, ArticleDocument.Table.TITLE);HighLightUtil.parseField(hit, ArticleDocument.Table.SUMMARY);HighLightUtil.parseField(hit, ArticleDocument.Table.CONTENT);ArticleDocument articleDocument new ArticleDocument();articleDocument.setId(Long.valueOf((Integer) map.get(ArticleDocument.Table.ID)));articleDocument.setTitle((String) map.get(ArticleDocument.Table.TITLE));articleDocument.setSummary((String) map.get(ArticleDocument.Table.SUMMARY));articleDocument.setContent((String) map.get(ArticleDocument.Table.CONTENT));articleDocuments.add(articleDocument);}return articleDocuments;}elasticsearch有一个高亮配置HighLightUtil可以使关键词高亮显示。 import org.elasticsearch.common.text.Text; import org.elasticsearch.search.SearchHit; import org.elasticsearch.search.fetch.subphase.highlight.HighlightField;import java.util.Map;public class HighLightUtil {public static void parseField(SearchHit hit, String field) {MapString, Object map hit.getSourceAsMap();//原来的结果HighlightField title hit.getHighlightFields().get(field);//解析高亮的字段if (title ! null) {Text[] fragments title.fragments();StringBuilder newTitle new StringBuilder();for (Text fragment : fragments) {newTitle.append(fragment);}//高亮文本替换掉原来的内容map.put(field, newTitle.toString());}}我们可以看到这里我使用的是谷歌商城的ElasticSearch Heap这个插件非常方便。 有什么问题可以再评论区评论我会尽快回复。 参考文章https://blog.csdn.net/forezp/article/details/106839262
http://wiki.neutronadmin.com/news/107882/

相关文章:

  • 企业网站用什么套站三好街做网站的公司
  • 商务网站开发基本流程建设银行网站的机构
  • thinkphp企业网站开发公司怎么建网站做推广
  • 无锡工程建设监察支队网站买一个网站多少钱
  • 手机网站建设软件有哪些wordpress可视化编辑器不见
  • 国内网站排名电脑上如何进入wordpress
  • dw用设计视图做网站平台设计实景图
  • 器材管理网站开发东莞常平医院网站建设
  • 电子商务网站设计与开发案例教程网站做315认证
  • 网站 跑马灯图片怎么做网站推广工作总结
  • 工业园企业建设网站公司网站快照不更新了
  • 品牌高端网站设计颇有名气的网站建设专家
  • 宁波技术好的企业网站制作wordpress 订阅推送
  • 培训会网站建设广东各地最新病例
  • 沈阳工程学院信息公开网大连百度推广排名优化
  • php网站建设到护卫神wordpress橫排友情链接
  • lol网站怎么做网站聚合页
  • 网站建设包含图文设计基于C 的网站开发源码
  • 做网站广告有哪些职位仙居住房和城乡建设部网站
  • 广州正规网站制作公司wordpress下载破解版
  • 大连网站建设报价优质商家口腔网站建设
  • 上海专业的网站永州城乡建设网站
  • 国外网站视频播放器怎么做网站的动效
  • 福州网站大全免费炫酷企业网站源码
  • 中小学网站建设论文上海工商网站
  • 在线做带字头像的网站谷歌优化工具
  • 长沙网站公司网站建设58同城找房子租房
  • 拟定建设方案物流网站免费网站统计
  • 昆明做一个公司网站多少费用云服务器可以做多个网站
  • 桂林哪里做网站网站建设除凡科外还有哪些