Elasticsearch入门Demo(一)

1.创建一个Maven工程,在pom.xml中添加如下代码:

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
  <modelVersion>4.0.0</modelVersion>


  <groupId>elasticsearch-demo</groupId>
  <artifactId>elasticsearch-demo</artifactId>
  <version>0.0.1-SNAPSHOT</version>
  <packaging>jar</packaging>

  <name>elasticsearch-demo</name>
  <url>http://maven.apache.org</url>

  <properties>
    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
  </properties>

  <dependencies>
        <!-- 日志依赖 -->
        <dependency>
            <groupId>org.slf4j</groupId>
            <artifactId>slf4j-log4j12</artifactId>
            <version>1.7.21</version>
            <scope>test</scope>
        </dependency>
        <!-- https://mvnrepository.com/artifact/org.apache.logging.log4j/log4j-core -->
        <dependency>
            <groupId>org.apache.logging.log4j</groupId>
            <artifactId>log4j-core</artifactId>
            <version>2.8.2</version>
        </dependency>
        <!-- https://mvnrepository.com/artifact/com.google.code.gson/gson -->
        <dependency>
            <groupId>com.google.code.gson</groupId>
            <artifactId>gson</artifactId>
            <version>2.8.0</version>
        </dependency>
        
        <dependency>
            <groupId>org.elasticsearch.client</groupId>
            <artifactId>transport</artifactId>
            <version>5.5.2</version>
        </dependency>
        
    <dependency>
      <groupId>junit</groupId>
      <artifactId>junit</artifactId>
      <version>3.8.1</version>
      <scope>test</scope>
    </dependency>
    
    <dependency> 
      <groupId>org.apache.logging.log4j</groupId>
      <artifactId>log4j-1.2-api</artifactId>
      <version>2.8.2</version>
   </dependency>
  </dependencies>

</project>

2.   通过Java程序连接Elasticsearch

需要注意的是,上一章节我们通过浏览器http://127.0.0.1:9200访问可以正常访问,这里需要知晓,9200端口是用于Http协议访问的,如果通过客户端访问需要通过9300端口才可以访问

package com;
import java.net.InetAddress;
import java.net.UnknownHostException;
import org.elasticsearch.client.transport.TransportClient;
import org.elasticsearch.common.settings.Settings;
import org.elasticsearch.common.transport.InetSocketTransportAddress;
import org.elasticsearch.transport.client.PreBuiltTransportClient;
import org.junit.Test;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
public class ElasticsearchTest1
{
    private Logger logger = LoggerFactory.getLogger(ElasticsearchTest1.class);
    public final static String HOST = "127.0.0.1";
    public final static int PORT = 9300;// http请求的端口是9200,客户端是9300
    @SuppressWarnings("resource")
    @Test
    public void test1() throws UnknownHostException
    {
        // 创建客户端
        TransportClient client = new PreBuiltTransportClient(Settings.EMPTY)
                .addTransportAddresses(new InetSocketTransportAddress(InetAddress.getByName(HOST), PORT));
        logger.debug("Elasticsearch connect info:" + client.toString());
        // 关闭客户端
        client.close();
    }
}

4.log4j.properties文件创建

### set log levels ###
log4j.rootLogger = DEBUG,Console,File


###  输出到控制台  ###
log4j.appender.Console=org.apache.log4j.ConsoleAppender
log4j.appender.Console.Target=System.out
log4j.appender.Console.layout=org.apache.log4j.PatternLayout
log4j.appender.Console.layout.ConversionPattern= %d{ABSOLUTE} %5p %c{1}:%L - %m%n




### 输出到日志文件 ###
log4j.appender.File=org.apache.log4j.RollingFileAppender 
log4j.appender.File.File=${project}/WEB-INF/logs/app.log
log4j.appender.File.DatePattern=_yyyyMMdd'.log'
log4j.appender.File.MaxFileSize=10MB
log4j.appender.File.Threshold=ALL
log4j.appender.File.layout=org.apache.log4j.PatternLayout

log4j.appender.File.layout.ConversionPattern=[%p][%d{yyyy-MM-dd HH\:mm\:ss,SSS}][%c]%m%n

4.   Elasticsearch索引库的创建

private Logger logger = LoggerFactory.getLogger(ElasticsearchTest2.class);
    public final static String HOST = "127.0.0.1";
    public final static int PORT = 9300; // http请求的端口是9200,客户端是9300
    private TransportClient client = null;


    @SuppressWarnings(
    {
            "resource", "unchecked"
    })
    @Before
    public void getConnect() throws UnknownHostException
    {
        client = new PreBuiltTransportClient(Settings.EMPTY)
                .addTransportAddresses(new InetSocketTransportAddress(InetAddress.getByName(HOST), PORT));
        logger.info("连接信息:" + client.toString());
    }


    @After
    public void closeConnect()
    {
        if (null != client)
        {
            logger.info("执行关闭连接操作...");
            client.close();
        }
    }


    @Test
    public void addIndex1() throws IOException
    {
        IndexResponse response = client.prepareIndex("msg", "tweet", "1").setSource(XContentFactory.jsonBuilder()
                .startObject().field("userName", "张三").field("sendDate", new Date()).field("msg", "你好李四").endObject())
                .get();


        logger.info("索引名称:" + response.getIndex() + "\n类型:" + response.getType() + "\n文档ID:" + response.getId()
                + "\n当前实例状态:");
    }

5.测试

测试Elasticsearch客户端连接

测试创建的索引库是否成功






posted @ 2018-04-04 17:13  小草1234  阅读(327)  评论(0编辑  收藏  举报