zoukankan      html  css  js  c++  java
  • ElasticSearch Java Client Demo

    关系型数据库和ElasticSearch概念对应关系

    Relational DB ElasticSearch
    Database Indice
    Tables Types
    Rows Documents
    Cloumns Fields

    首先在maven pom.xml中引入ElasticSearch java client 的jar包:

            <dependency>
                <groupId>org.elasticsearch</groupId>
                <artifactId>elasticsearch</artifactId>
                <version>5.2.1</version>
            </dependency>
            <dependency>
                <groupId>org.elasticsearch.client</groupId>
                <artifactId>transport</artifactId>
                <version>5.2.1</version>
            </dependency>
            <dependency>
                <groupId>org.apache.logging.log4j</groupId>
                <artifactId>log4j-core</artifactId>
                <version>2.6.2</version>
            </dependency>

    单元测试代码:

    package sxq.demo;
    
    import java.net.InetAddress;
    import java.net.UnknownHostException;
    import java.util.Date;
    import java.util.HashMap;
    import java.util.Map;
    import java.util.concurrent.ExecutionException;
    
    import org.elasticsearch.action.get.GetResponse;
    import org.elasticsearch.action.index.IndexResponse;
    import org.elasticsearch.action.search.SearchResponse;
    import org.elasticsearch.client.transport.TransportClient;
    import org.elasticsearch.common.settings.Settings;
    import org.elasticsearch.common.transport.InetSocketTransportAddress;
    import org.elasticsearch.index.query.QueryBuilder;
    import org.elasticsearch.index.query.QueryBuilders;
    import org.elasticsearch.search.SearchHit;
    import org.elasticsearch.search.SearchHits;
    import org.elasticsearch.search.sort.SortOrder;
    import org.elasticsearch.transport.client.PreBuiltTransportClient;
    import org.junit.Before;
    import org.junit.Test;
    
    public class ElasticSearchTest {
        TransportClient client;
        @Before
        @SuppressWarnings({ "unchecked" })
        public void before() throws UnknownHostException, InterruptedException, ExecutionException {
            Settings esSettings = Settings.builder()
                    .put("cluster.name", "elasticsearch") //设置ES实例的名称
                    .put("client.transport.sniff", true) //自动嗅探整个集群的状态,把集群中其他ES节点的ip添加到本地的客户端列表中
                    .build();
            client = new PreBuiltTransportClient(esSettings);//初始化client较老版本发生了变化,此方法有几个重载方法,初始化插件等。
            //此步骤添加IP,至少一个,其实一个就够了,因为添加了自动嗅探配置
            client.addTransportAddress(new InetSocketTransportAddress(InetAddress.getByName("localhost"), 9300));
        }
        
        @Test
        public void index() throws Exception {
            Map<String,Object> infoMap = new HashMap<String, Object>();
            infoMap.put("name", "广告信息11");
            infoMap.put("title", "我的广告22");
            infoMap.put("createTime", new Date());
            infoMap.put("count", 1022);
            IndexResponse indexResponse = client.prepareIndex("test", "info","100").setSource(infoMap).execute().actionGet();
            System.out.println("id:"+indexResponse.getId());
        }
        
        @Test
        public void get() throws Exception {
            GetResponse response = client.prepareGet("sxq", "user", "2")  
                    .execute().actionGet();  
            System.out.println("response.getId():"+response.getId());  
            System.out.println("response.getSourceAsString():"+response.getSourceAsString());  
        }
        
        @Test
        public void query() throws Exception {
            //term查询
    //        QueryBuilder queryBuilder = QueryBuilders.termQuery("age", 50) ;
            //range查询
            QueryBuilder rangeQueryBuilder = QueryBuilders.rangeQuery("age").gt(50);
            SearchResponse searchResponse = client.prepareSearch("sxq")
                    .setTypes("user")
                    .setQuery(rangeQueryBuilder)
                    .addSort("age", SortOrder.DESC)
                    .setSize(20)
                    .execute()
                    .actionGet();
            SearchHits hits = searchResponse.getHits(); 
            System.out.println("查到记录数:"+hits.getTotalHits());
            SearchHit[] searchHists = hits.getHits();
            if(searchHists.length>0){
                for(SearchHit hit:searchHists){
                    String name =  (String) hit.getSource().get("name");
                    Integer age = (Integer)hit.getSource().get("age");
                    System.out.format("name:%s ,age :%d 
    ",name ,age);
                }
            }
        }
        
    }
  • 相关阅读:
    哈希表--扩展数组
    哈希表效率
    P=(1+1/(1-L))/2
    函数推进
    简单函数2
    简单函数
    getting data from the keybroad
    nutch-2.2.1 hadoop-1.2.1 hbase-0.92.1 集群部署(实用)
    hbase zookeeper独立搭建
    Orchard 介绍
  • 原文地址:https://www.cnblogs.com/sunxueqiang0329/p/6697781.html
Copyright © 2011-2022 走看看