ElasticSearch怎么在Spring boot中使用
这期内容当中小编将会给大家带来有关ElasticSearch怎么在Spring boot中使用,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。
1.安装ElasticSearch
解压,到bin目录,双击elasticsearch.bat
1.1安装elasticsearch-head
https://github.com/mobz/elasticsearch-head
elasticsearch-head是一个网页查看elasticsearch状态,操作的第三方东西
gitclonegit://github.com/mobz/elasticsearch-head.git cdelasticsearch-head npminstall npmrunstart openhttp://localhost:9100/
要先安装node.js
config/elasticsearch.yml 文件增加
http.cors.enabled: truehttp.cors.allow-origin: “*”
elasticsearch-head/Gruntfile.js
connect:{ server:{ options:{ hostname:'0.0.0.0', port:9100, base:'.', keepalive:true } } }
8082改成你自己的端口
http://127.0.0.1:8082/swagger-ui.html#/
0是第一页
application.properties
#===esstart=== spring.data.elasticsearch.repositories.enabled=true spring.data.elasticsearch.cluster-nodes=127.0.0.1:9300 #===esend===
2.porm
4.0.0 org.springframework.boot spring-boot-starter-parent 2.1.1.RELEASE com.example demo 0.0.1-SNAPSHOT demo DemoprojectforSpringBoot jar 1.8 io.springfox springfox-swagger2 2.6.1 io.springfox springfox-swagger-ui 2.6.1 org.springframework.boot spring-boot-starter-data-elasticsearch org.springframework.boot spring-boot-starter org.springframework.boot spring-boot-starter-test test org.springframework.boot spring-boot-starter-web org.springframework.boot spring-boot-maven-plugin
主要添加spring-boot-starter-data-elasticsearch,注意spring-boot-starter-parent的版本号
3. GoodsInfo
packagecom.example.demo.domain; importorg.springframework.data.elasticsearch.annotations.Document; importjava.io.Serializable; @Document(indexName="testgoods",type="goods") publicclassGoodsInfoimplementsSerializable{ privateLongid; privateStringname; privateStringdescription; publicLonggetId(){ returnid; } publicvoidsetId(Longid){ this.id=id; } publicStringgetName(){ returnname; } publicvoidsetName(Stringname){ this.name=name; } publicStringgetDescription(){ returndescription; } publicvoidsetDescription(Stringdescription){ this.description=description; } publicGoodsInfo(Longid,Stringname,Stringdescription){ this.id=id; this.name=name; this.description=description; } publicGoodsInfo(){ } }
indexName 类似数据库名称,type类似表名字
4. GoodsRepository
packagecom.example.demo.repository; importcom.example.demo.domain.GoodsInfo; importorg.springframework.data.elasticsearch.repository.ElasticsearchRepository; importorg.springframework.stereotype.Component; @Component publicinterfaceGoodsRepositoryextendsElasticsearchRepository{ }
这里会帮你封装了很多了
5. HelloWorldController
packagecom.example.demo.controller; importcom.example.demo.domain.GoodsInfo; importcom.example.demo.repository.GoodsRepository; importio.swagger.annotations.Api; importio.swagger.annotations.ApiImplicitParam; importio.swagger.annotations.ApiOperation; importorg.elasticsearch.index.query.QueryBuilder; importorg.elasticsearch.index.query.QueryBuilders; importorg.elasticsearch.index.query.functionscore.FunctionScoreQueryBuilder; importorg.springframework.beans.factory.annotation.Autowired; importorg.springframework.data.domain.Page; importorg.springframework.data.domain.PageRequest; importorg.springframework.data.domain.Pageable; importorg.springframework.data.elasticsearch.core.query.NativeSearchQuery; importorg.springframework.data.elasticsearch.core.query.NativeSearchQueryBuilder; importorg.springframework.data.elasticsearch.core.query.SearchQuery; importorg.springframework.stereotype.Controller; importorg.springframework.web.bind.annotation.*; importjava.util.List; importjava.util.Optional; importstaticorg.elasticsearch.index.query.QueryBuilders.queryStringQuery; @Controller @Api(value="HelloWorldController|一个用来测试swagger注解的控制器",tags="HelloWorldController",description="HelloWorldController") publicclassHelloWorldController{ @Autowired privateGoodsRepositorygoodsRepository; @ResponseBody @RequestMapping(value="/hello",method=RequestMethod.GET) @ApiOperation(value="根据用户编号获取用户姓名",notes="test:仅1和2有正确返回") @ApiImplicitParam(paramType="query",name="userNumber",value="用户编号",required=true,dataType="Integer") publicStringindex(@RequestParamIntegeruserNumber){ if(userNumber==1){ return"小白"; } elseif(userNumber==2){ return"小红"; } else{ return"未知"; } } @ResponseBody @RequestMapping(value="/save",method=RequestMethod.POST) @ApiOperation(value="新增商品") publicStringsave(){ GoodsInfogoodsInfo=newGoodsInfo(System.currentTimeMillis(),"商品"+System.currentTimeMillis(),"这是一个测试商品"); goodsRepository.save(goodsInfo); return"success"; } @ResponseBody @RequestMapping(value="/delete",method=RequestMethod.POST) @ApiOperation(value="删除商品") @ApiImplicitParam(paramType="query",name="id",value="商品id",required=true,dataType="long") publicStringdelete(@RequestParam(required=true)longid){ goodsRepository.deleteById(id); return"success"; } @ResponseBody @RequestMapping(value="/update",method=RequestMethod.POST) @ApiOperation(value="更新商品") @ApiImplicitParam(paramType="query",name="id",value="商品id",required=true,dataType="long") publicStringupdate(@RequestParam(required=true)longid, @RequestParam(required=false)Stringname, @RequestParam(required=false)Stringdescription){ OptionalgoodsInfo=goodsRepository.findById(id); if(goodsInfo.isPresent()){ if(name!=null){ goodsInfo.get().setName(name); } if(description!=null){ goodsInfo.get().setDescription(description); } goodsRepository.save(goodsInfo.get()); return"success"; }else{ return"nofind"; } } @ResponseBody @RequestMapping(value="/getOne",method=RequestMethod.GET) @ApiOperation(value="得到一个商品") @ApiImplicitParam(paramType="query",name="id",value="商品id",required=true,dataType="long") publicOptional getOne(@RequestParam(required=true)longid){ Optional goodsInfo=goodsRepository.findById(id); returngoodsInfo; } privateSearchQuerygetEntitySearchQuery(intpageNumber,StringsearchContent){ Pageablepageable=PageRequest.of(pageNumber,20); SearchQuerysearchQuery=newNativeSearchQueryBuilder().withQuery(queryStringQuery(searchContent)).withPageable(pageable).build(); returnsearchQuery; } @ResponseBody @RequestMapping(value="/search",method=RequestMethod.GET) @ApiOperation(value="搜索商品") publicList search(@RequestParam(required=true)IntegerpageNumber,@RequestParam(required=true)Stringquery){ SearchQuerysearchQuery=getEntitySearchQuery(pageNumber,query); Page goodsPage=goodsRepository.search(searchQuery); returngoodsPage.getContent(); } }
上述就是小编为大家分享的ElasticSearch怎么在Spring boot中使用了,如果刚好有类似的疑惑,不妨参照上述分析进行理解。如果想知道更多相关知识,欢迎关注恰卡编程网行业资讯频道。
推荐阅读
-
Notepad++ 插件推荐:代码折叠、语法高亮增强工具合集
-
Emacs Evil 模式:Vim 用户快速上手 Emacs 的过渡方案
-
Vim 寄存器深度解析:多缓冲区操作与复杂文本处理
-
Atom 主题切换:Material Design 与扁平化风格对比推荐
-
Lightly IDE 快捷键:Python 开发者必学的效率提升操作
-
Xcode 模拟器调试:多设备同步与性能监控技巧
-
PyCharm 代码格式化:黑魔法工具 Black 与自动规范配置
-
IntelliJ IDEA Docker 集成:微服务本地调试与镜像构建
-
VS Code Remote SSH:远程服务器开发环境搭建全流程
-
Retool 数据库连接:支持 MySQL、PostgreSQL 等多数据源配置