设为首页 收藏本站
查看: 1382|回复: 0

[经验分享] spring boot集成elasticsearch

[复制链接]
发表于 2019-1-29 07:58:51 | 显示全部楼层 |阅读模式
  一、配置环境
  spring boot 1.5.2.RELEASE
  Elasticsearch:2.4.4 需要进行软件安装并在项目运行的过程中启动
  elasticsearch依赖包:spring-boot-starter-data-elasticsearch:2.1.3.RELEASE
  jNA依赖包:net.java.dev.jna:jna:4.3.0
  二、配置elasticsearch端口
  修改application.properties
#Elasticsearch服务地址
spring.data.elasticsearch.cluster-nodes=localhost:9300
#设置链接超时时间
spring.data.elasticsearch.properties.transport.tcp.connect_timeout=120s  三、正文
//@Document 标识是一个文档  indexName:索引的名称
@Document(indexName = "blog",type = "blog")  
public class EsBlog implements Serializable{
private static final long serialVersionUID = 1L;
@Id  //主键
private String id;
private String title;
private String summary;
private String content;
protected EsBlog() { //JPA 规范要求,防止直接使用
}
public EsBlog(String title, String summary, String content) {
this.title = title;
this.summary = summary;
this.content = content;
}

public String getId() {
return id;
}
public void setId(String id) {
this.id = id;
}
public String getTitle() {
return title;
}
public void setTitle(String title) {
this.title = title;
}
public String getSummary() {
return summary;
}
public void setSummary(String summary) {
this.summary = summary;
}
public String getContent() {
return content;
}
public void setContent(String content) {
this.content = content;
}

@Override
public String toString() {
return "EsBlog [id=" + id + ", title=" + title + ", summary=" + summary + ", content=" + content + "]";
}
}//String是ID的类型
public interface EsBlogRepository extends ElasticsearchRepository {
/**
* 根据方法名可以替代sql查询,title是实体类的属性
* Pageable 是返回的内容
* 下午4:41:42
*/
Page findDistinctEsBlogByTitleContainingOrSummaryContainingOrContentContaining(String title, String summary,String content, Pageable pageable);
}  测试类
@RunWith(SpringRunner.class)
@SpringBootTest
public class BlogRepositoryTest {
@Autowired
    private EsBlogRepository esBlogRepository;
@Before
public void initRepositoryData() {
// 清空所有
esBlogRepository.deleteAll();
esBlogRepository.save(new EsBlog("《关雎》","关关雎鸠",
"关关雎鸠,在河之洲。窈窕淑女,君子好逑。参差荇菜,左右流之。窈窕淑女,寤寐求之。求之不得,寤寐思服。"));
esBlogRepository.save(new EsBlog("《蒹葭》","蒹葭苍苍",
"蒹葭苍苍,白露为霜。所谓伊人,在水一方。溯洄从之,道阻且长;溯游从之,宛在水中央。蒹葭凄凄,白露未晞"));  
esBlogRepository.save(new EsBlog("《采薇》","采薇采薇",
"采薇采薇,薇亦作止。曰归曰归,岁亦莫止。靡家靡室,猃狁之故。不遑启居,猃狁之故。采薇采薇,薇亦柔止。"));
}
@Test
public void testFindDistinctEsBlogByTitleContainingOrSummaryContainingOrContentContaining() {
Pageable pageable = new PageRequest(0, 20);
String title = "关";
String summary = "关关";
String content = "伊人";
Page page = esBlogRepository.findDistinctEsBlogByTitleContainingOrSummaryContainingOrContentContaining(title,summary, content, pageable);
//assertThat(page.getTotalElements()).isEqualTo(2);
for (EsBlog esBlog : page) {
System.out.println(esBlog.toString());
}
}
}  Controller类:
@RestController
@RequestMapping("/blogs")
public class BlogController {
@Autowired
    private EsBlogRepository esBlogRepository;
@GetMapping
public List list(@RequestParam(value="title",required=false,defaultValue="") String title,
@RequestParam(value="summary",required=false,defaultValue="") String summary,
@RequestParam(value="content",required=false,defaultValue="") String content,
@RequestParam(value="pages",required=false,defaultValue="0") int pages,
@RequestParam(value="limit",required=false,defaultValue="10") int limit) {
// 数据在 Test 里面先初始化了,这里只管取数据
Pageable pageable = new PageRequest(pages, limit);
Page page = esBlogRepository.findDistinctEsBlogByTitleContainingOrSummaryContainingOrContentContaining(title,summary, content, pageable);
return page.getContent();
}
}  运行之前需要启动着Elasticsearch服务,并在application.properties中配置:spring.data.elasticsearch.cluster-nodes=127.0.0.1:9300
  运行url:http://localhost:8080/blogs?title=关&summary=关关&content=伊人





运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.iyunv.com/thread-668917-1-1.html 上篇帖子: elasticsearch入门简介 下篇帖子: elasticsearch基础操作01
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表