java操作elasticsearch是作为一个无数据节点与其他节点之间通信,端口是9300.elasticsearch和jdk版本一定要适配,因为elasticsearch是用java编写的,随着版本的升级,用的也是最新版的jdk,所以低版本的jdk就和最新elasticsearch版本不匹配。但是,高版本的jdk可以向下兼容低版本的elasticsearch,因为jdk在升级的过程中,自身也要向下兼容。这一点很重要,否则项目是起不来的。我用的是jdk1.8,elasticsearch-2.4.2。现在,让我们开始集成。

一、注入elasticsearch依赖

 

 <!-- elasticsearch -->
    <dependency>
            <groupId>org.elasticsearch</groupId>
            <artifactId>elasticsearch</artifactId>
            <!-- <version>6.0.0</version> -->
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-data-elasticsearch</artifactId>
        </dependency>
         
        <dependency>
            <groupId>org.springframework.data</groupId>
            <artifactId>spring-data-elasticsearch</artifactId>
        </dependency>
        <dependency>  
            <groupId>com.fasterxml.jackson.core</groupId>  
            <artifactId>jackson-databind</artifactId>  
            <!-- <version>2.1.3</version>   -->
		 </dependency>
		 <dependency>
            <groupId>net.java.dev.jna</groupId>
            <artifactId>jna</artifactId>
            <!-- <version>3.0.9</version> -->
        </dependency>

 

二、在application.properties中添加elasticsearch配置

 

# elasticsearch
spring.data.elasticsearch.cluster-name=elasticsearch  #节点名字,默认elasticsearch
spring.data.elasticsearch.cluster-nodes=127.0.0.1:9300  #节点地址,多个节点用逗号隔开
#spring.data.elasticsearch.local=false
spring.data.elasticsearch.repositories.enable=true


三、实体类

 

 

import org.springframework.data.annotation.Id;
import org.springframework.data.elasticsearch.annotations.Document;
import org.springframework.data.elasticsearch.annotations.Field;
 
// indexName :索引名字(对应mysql的数据库名字)
//type:类型(对应mysql的表名)
@Document(indexName = "megacorp",type = "employee", shards = 1,replicas = 0, refreshInterval = "-1")
public class Employee { 
    
    @Id 
    private String id;
    @Field 
    private String firstName; 
    @Field 
    private String lastName; 
    @Field 
    private Integer age=0; 
    @Field 
    private String about; 

    public String getId() {return id;}
    public void setId(String id){this.id = id;}
    public String getFirstName() {return firstName;}
    public void setFirstName(String firstName) {this.firstName = firstName;}
    public String getLastName() {return lastName;}
    public void setLastName(String lastName) {this.lastName = lastName;}
    public Integer getAge() {return age;}
    public void setAge(Integer age) {this.age = age;}
    public String getAbout() {return about;}
    public void setAbout(String about) {this.about = about;}
}

 

 

 

 

四、编写dao

 

 

import org.springframework.data.elasticsearch.repository.ElasticsearchRepository;
import org.springframework.stereotype.Component;

import com.example.demo.elasticsearch.entity.Employee;

@Component
public interface EmployeeRepository extends ElasticsearchRepository<Employee,String>{
	
	Employee queryEmployeeById(String id);

}

五、由于咱们就是入门测试,service我就省略了,直接书写接口了

 

 

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

import com.example.demo.elasticsearch.dao.EmployeeRepository;
import com.example.demo.elasticsearch.entity.Employee;
import com.google.gson.Gson;

@RestController
@RequestMapping("/es")
public class ElasticSearchController {
	
    @Autowired
    private EmployeeRepository er;
	
	//增加
	@RequestMapping("/add")
	public String add(){
		
		Employee employee=new Employee();
		employee.setId("1");
		employee.setFirstName("xuxu");
		employee.setLastName("zh");
		employee.setAge(26);
		employee.setAbout("i am in peking");
		er.save(employee);
		
		System.err.println("add a obj");
		
		return "success";
	}
	
        //删除
	@RequestMapping("/delete")
	public String delete(){
		
		er.delete("1");
		
		return "success";
	}
	
        //局部更新
	@RequestMapping("/update")
	public String update(){
		
		Employee employee=er.queryEmployeeById("1");
		employee.setFirstName("哈哈");
		er.save(employee);
		
		System.err.println("update a obj");
	
		return "success";
	}
	
        //查询
	@RequestMapping("/query")
	public Employee query(){
		
		Employee accountInfo=er.queryEmployeeById("1");
		System.err.println(new Gson().toJson(accountInfo));
		
		return accountInfo;
	}
	
}

 

 

至此,elasticsearch就算是入门了。

 

 
GitHub 加速计划 / sp / spring-boot
39
7
下载
spring-projects/spring-boot: 是一个用于简化Spring应用开发的框架。适合用于需要快速开发企业级Java应用的项目。特点是可以提供自动配置、独立运行和内置的Tomcat服务器,简化Spring应用的构建和部署。
最近提交(Master分支:2 个月前 )
d87aa53f Closes gh-48291 13 小时前
70acb44d - 16 小时前
Logo

AtomGit 是由开放原子开源基金会联合 CSDN 等生态伙伴共同推出的新一代开源与人工智能协作平台。平台坚持“开放、中立、公益”的理念,把代码托管、模型共享、数据集托管、智能体开发体验和算力服务整合在一起,为开发者提供从开发、训练到部署的一站式体验。

更多推荐