欢迎投稿

今日深度:

elasticsearch Java API 索引更新,elasticsearchapi

elasticsearch Java API 索引更新,elasticsearchapi


package javaapi;

import java.io.IOException;
import java.net.InetAddress;
import java.util.concurrent.ExecutionException;

import org.apache.log4j.Logger;
import org.elasticsearch.action.index.IndexRequest;
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 org.junit.After;
import org.junit.Before;
import org.junit.Test;

public class Update {
	
	protected TransportClient client;
	Logger logger = Logger.getLogger(Update.class); 
	
	@Before
    public void setUp() throws Exception{
		 // on startup
		 /**
	     * 1. java客户端的方式是以tcp协议在9300端口上进行通信
	     * 2. http客户端的方式是以http协议在9200端口上进行通信
	     */
		 //此步骤添加IP,至少一个,如果设置了"client.transport.sniff"= true 一个就够了,因为添加了自动嗅探配置
		client = new PreBuiltTransportClient(Settings.EMPTY)
		        .addTransportAddress(new InetSocketTransportAddress(InetAddress.getByName("localhost"), 9300));
		        //.addTransportAddress(new InetSocketTransportAddress(InetAddress.getByName("localhost"), 9201));

		// on shutdown  关闭client

		//client.close();
		 
	}
	 @After
    public void tearDown() throws Exception {
        if (client != null) {
            client.close();
        }

    }
	
	@Test
	public void insert() throws IOException{
		
		 XContentBuilder builder = XContentFactory.jsonBuilder().startObject(); 
		 builder = builder.field("name","yan");
		 builder = builder.field("age",23);
		 builder = builder.endObject();
		      
	     IndexResponse response = client.prepareIndex("person", "mail","1").setSource(builder).get();  
	     System.out.println("创建成功!");
	}
	
	/*
	 * 使用prepareUpdate更新
	 * 1.当id不存在时,不会自动插入,直接报错“document missing”
	 * 2.可以更新局部字段(map里有多少字段更新多少,也可以增加map里面新字段)
	 */
	@Test
	public void update() throws IOException{
		
		 XContentBuilder builder = XContentFactory.jsonBuilder().startObject(); 
		 builder = builder.field("name","circle");
		 builder = builder.field("age",21);
		 builder = builder.field("sex","female");
		 builder = builder.endObject();
		 try{
			 UpdateResponse response = client.prepareUpdate("person", "mail","10").setDoc(builder).get();
		 }catch(Exception e){
			 e.printStackTrace();
		 }
	     System.out.println("更新成功!");
	}
	
	/*
	 * 使用UpdateRequest更新
	 * 
	 */
	@Test 
	public void updateByRequest()
	{		
		try {
			XContentBuilder builder = XContentFactory.jsonBuilder().startObject(); 
			builder = builder.field("name","杜波");
			builder = builder.field("age",21);
			builder = builder.field("sex","boy");
			builder = builder.endObject();
			UpdateRequest updaterequest = new UpdateRequest("person","mail","AWIYvg8htx3bwuETMEUO");
			updaterequest.doc(builder);
			client.update(updaterequest).get();
			System.out.println("更新成功");
		} catch (IOException e) {
			e.printStackTrace();
			System.out.println("更新失败");
		} catch (InterruptedException e) {
			e.printStackTrace();
			System.out.println("更新失败");
		} catch (ExecutionException e) {
			e.printStackTrace();
			System.out.println("更新失败");
		}
	}
	
	/*
	 * 更新插入,如果存在文档就更新,如果不存在就插入
	 */
	@Test
	public void upsert() throws IOException{
		XContentBuilder builder = XContentFactory.jsonBuilder().startObject();
		
		builder = builder.field("name","circle");
		builder = builder.field("age",21);
		builder = builder.field("sex","female");
		
		builder = builder.endObject();
		
		IndexRequest indexRequest = new IndexRequest("person", "mail", "10")
		        .source(builder);
		UpdateRequest updateRequest = new UpdateRequest("person", "mail", "10")
		        .doc(builder)
		        .upsert(indexRequest); //如果不存在此文档 ,就增加 `indexRequest`
		try {
			client.update(updateRequest).get();
			System.out.println("更新成功");
		} catch (InterruptedException e) {
			e.printStackTrace();
		} catch (ExecutionException e) {
			e.printStackTrace();
		}
	}
	
	
	
}

www.htsjk.Com true http://www.htsjk.com/Elasticsearch/36085.html NewsArticle elasticsearch Java API 索引更新,elasticsearchapi package javaapi;import java.io.IOException;import java.net.InetAddress;import java.util.concurrent.ExecutionException;import org.apache.log4j.Logger;import org.elasticsearch.action.inde...
相关文章
    暂无相关文章
评论暂时关闭