欢迎投稿

今日深度:

Elasticsearch 使用java客户端操作索引,elasticsearchjava

Elasticsearch 使用java客户端操作索引,elasticsearchjava


下面使用的代码使用的索引和类型请参考上一篇博客Elasticsearch 使用命令操作索引
普通java项目
1、新建Maven工程 pom文件依赖

        <dependency>
            <groupId>org.elasticsearch.client</groupId>
            <artifactId>transport</artifactId>
            <version>5.5.2</version>
        </dependency>
        <dependency>
            <groupId>org.apache.logging.log4j</groupId>
            <artifactId>log4j-core</artifactId>
            <version>2.8.2</version>
        </dependency>
        <dependency>
            <groupId>com.fasterxml.jackson.core</groupId>
            <artifactId>jackson-databind</artifactId>
            <version>2.8.9</version>
        </dependency>
    </dependencies>

2、配置文件
增加一个日志文件 log4j2.properties

内容为:

appender.console.type = Console
appender.console.name = console
appender.console.layout.type = PatternLayout

rootLogger.level = info
rootLogger.appenderRef.console.ref = console

3、使用的Java类为

Category.java类

package com.szc.model;

/**
 * 产品分类
 * @author Administrator
 *
 */
public class Category {

    private String productPlanId;
    private String id;
    private String name;
    private String parentId;
    public String getProductPlanId() {
        return productPlanId;
    }
    public void setProductPlanId(String productPlanId) {
        this.productPlanId = productPlanId;
    }
    public String getId() {
        return id;
    }
    public void setId(String id) {
        this.id = id;
    }
    public String getName() {
        return name;
    }
    public void setName(String name) {
        this.name = name;
    }
    public String getParentId() {
        return parentId;
    }
    public void setParentId(String parentId) {
        this.parentId = parentId;
    }

    public Category() {
        super();
    }
    public Category(String productPlanId, String id, String name, String parentId) {
        super();
        this.productPlanId = productPlanId;
        this.id = id;
        this.name = name;
        this.parentId = parentId;
    }
    @Override
    public String toString() {
        return "Category [productPlanId=" + productPlanId + ", id=" + id + ", name=" + name + ", parentId=" + parentId
                + "]";
    }


}

ProductPlan.java类

package com.szc.model;

import java.util.List;

/**
 * 产品计划类
 * @author Administrator
 *
 */
public class ProductPlan {

    private String id;
    private String name;
    private String desc;
    private float price;
    private List<Category> categorys;

    private String productId;
    private String productName;
    public String getId() {
        return id;
    }
    public void setId(String id) {
        this.id = id;
    }
    public String getName() {
        return name;
    }
    public void setName(String name) {
        this.name = name;
    }
    public String getDesc() {
        return desc;
    }
    public void setDesc(String desc) {
        this.desc = desc;
    }
    public float getPrice() {
        return price;
    }
    public void setPrice(float price) {
        this.price = price;
    }
    public List<Category> getCategorys() {
        return categorys;
    }
    public void setCategorys(List<Category> categorys) {
        this.categorys = categorys;
    }
    public String getProductId() {
        return productId;
    }
    public void setProductId(String productId) {
        this.productId = productId;
    }
    public String getProductName() {
        return productName;
    }
    public void setProductName(String productName) {
        this.productName = productName;
    }


    public ProductPlan() {
        super();
    }
    public ProductPlan(String id, String name, String desc, float price, List<Category> categorys, String productId,
            String productName) {
        super();
        this.id = id;
        this.name = name;
        this.desc = desc;
        this.price = price;
        this.categorys = categorys;
        this.productId = productId;
        this.productName = productName;
    }
    @Override
    public String toString() {
        return "ProductPlan [id=" + id + ", name=" + name + ", desc=" + desc + ", price=" + price + ", categorys="
                + categorys + ", productId=" + productId + ", productName=" + productName + "]";
    }



}

ElasticJavaClient类

package com.szc.client;

import java.net.InetAddress;
import java.net.UnknownHostException;
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
import java.util.Map;

import org.elasticsearch.action.delete.DeleteResponse;
import org.elasticsearch.action.get.GetResponse;
import org.elasticsearch.action.index.IndexResponse;
import org.elasticsearch.action.update.UpdateRequest;
import org.elasticsearch.action.update.UpdateResponse;
import org.elasticsearch.client.transport.TransportClient;
import org.elasticsearch.common.settings.Settings;
import org.elasticsearch.common.transport.InetSocketTransportAddress;
import org.elasticsearch.common.xcontent.XContentBuilder;
import org.elasticsearch.common.xcontent.XContentFactory;
import org.elasticsearch.transport.client.PreBuiltTransportClient;

import com.fasterxml.jackson.core.JsonProcessingException;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.szc.model.Category;
import com.szc.model.ProductPlan;

public class ElasticJavaClient {

    public TransportClient getClient() throws UnknownHostException{
        Settings settings=Settings.builder().put("cluster.name","wali").build();
        TransportClient client=new PreBuiltTransportClient(settings)
                .addTransportAddress(new InetSocketTransportAddress(InetAddress.getByName("192.168.254.128"),9300))
                .addTransportAddress(new InetSocketTransportAddress(InetAddress.getByName("192.168.254.129"),9300));
        return client;
    }

    /**
     * 添加一个文档
     * @param client
     * @throws JsonProcessingException
     */
    @SuppressWarnings("deprecation")
    public void addIndex(TransportClient client) throws JsonProcessingException{
        List<Category> categorys=new ArrayList<>();
        Category category1=new Category("111", "123", "意外险", null);
        Category category2=new Category("111", "126", "财产险", "0");
        Collections.addAll(categorys, category1,category2);
        ProductPlan plan=new ProductPlan("001", "成人综合保险", "全面保障你的财产安全", 3300, categorys, "111", null);
        ObjectMapper mapper =new ObjectMapper();
        String json=mapper.writeValueAsString(plan);
        IndexResponse response=client.prepareIndex("product", "product_plan").setSource(json).get();
        System.out.println(response.status().getStatus());
        //创建成功 反会的状态码是201
        if(response.status().getStatus()==201){
            System.out.println(response.getId());
        }
    }
    /**
     * 查询一个文档
     * @param client
     * @throws Exception
     */
    public void getIndex(TransportClient client) throws Exception{
        GetResponse response=client.prepareGet("product", "product_plan","AWG4BHScpkaDOYy0S6LV").get();
        System.out.println("1: \n "+response.getSource());
        //得到的是Map类型的结果
        Map<String,Object> map=response.getSource();
        map.forEach((k, v) -> System.out.println("key:value = " + k + ":" + v));
        ObjectMapper mapper =new ObjectMapper();
        //得到Json类型的结果 可以转成对象
        ProductPlan plan=mapper.readValue(response.getSourceAsString(), ProductPlan.class);
        System.out.println(plan.getCategorys()+"\n "+plan.getId());
    }
    /**
     * 删除一个文档
     * @param client
     */
    public void deleteIndex(TransportClient client){
        DeleteResponse response=client.prepareDelete("product", "product_plan","AWG4AgRIWB5UoIZiLx5h").get();
        if(response.status().getStatus()==200){
            System.out.println("删除成功");
        }
    }
    /**
     * 更新
     * @param client
     * @throws Exception
     */
    public void updateIndex(TransportClient client) throws Exception{

         //方案一 使用对象进行更新的话 如果对象中值为空的属性 都会被更新为null 数值更新为0
        /* ProductPlan plan=new ProductPlan();
           plan.setName("成人");
           ObjectMapper mapper =new ObjectMapper();
           String json=mapper.writeValueAsString(plan);
         */
        //方案二 开始 更新需要更新的属性
         XContentBuilder json=XContentFactory.jsonBuilder();
         json.startObject().field("id","005").field("name","成人意外保险").field("price",6000).endObject();
        //方案二 结束 
         UpdateRequest updateRequest=new UpdateRequest("product", "product_plan","AWG4A4gypkaDOYy0S6LU").doc(json);

         UpdateResponse response=client.update(updateRequest).get();
         if(response.status().getStatus()==200){
             System.out.println("更新成功");
         }
        }
    public static void main(String[] args) throws Exception {
        ElasticJavaClient elasticJavaClient=new ElasticJavaClient();
        //elasticJavaClient.addIndex(elasticJavaClient.getClient());
        //elasticJavaClient.getIndex(elasticJavaClient.getClient());
        //elasticJavaClient.deleteIndex(elasticJavaClient.getClient());
        elasticJavaClient.updateIndex(elasticJavaClient.getClient());
    }
}

www.htsjk.Com true http://www.htsjk.com/Elasticsearch/35532.html NewsArticle Elasticsearch 使用java客户端操作索引,elasticsearchjava 下面使用的代码使用的索引和类型请参考上一篇博客Elasticsearch 使用命令操作索引 普通java项目 1、新建Maven工程 pom文件依赖 dependency...
相关文章
    暂无相关文章
评论暂时关闭