elasticsearch常用JAVA API 執行個體

來源:互聯網
上載者:User

標籤:alt   java api   framework   client   color   article   代碼   cli   常用   

1.引入dependency

<dependency>            <groupId>org.springframework.data</groupId>            <artifactId>spring-data-elasticsearch</artifactId>            <version>1.4.0.M1</version></dependency>

2:建立\添加索引

 

View Code

 

 

 

3.建立實體類

package testweb;import org.springframework.data.elasticsearch.annotations.Document;@Document(indexName="yananindex",type="yanantype")public class Yanan {    private int id;    private String name;    private String gender;    public int getId() {        return id;    }    public void setId(int id) {        this.id = id;    }    public String getName() {        return name;    }    public void setName(String name) {        this.name = name;    }    public String getGender() {        return gender;    }    public void setGender(String gender) {        this.gender = gender;    }    }

準備工作做完了,下面開始測試

4.queryForObject\queryForList\彙總查詢\統計數量\判斷索引是否存在\刪除指定id的索引

package testweb;import java.util.List;import org.elasticsearch.action.search.SearchResponse;import org.elasticsearch.client.transport.TransportClient;import org.elasticsearch.common.settings.ImmutableSettings;import org.elasticsearch.common.settings.Settings;import org.elasticsearch.common.transport.InetSocketTransportAddress;import org.elasticsearch.common.transport.TransportAddress;import org.elasticsearch.index.query.BoolQueryBuilder;import org.elasticsearch.index.query.QueryBuilders;import org.elasticsearch.search.aggregations.AggregationBuilders;import org.elasticsearch.search.aggregations.Aggregations;import org.elasticsearch.search.aggregations.bucket.terms.StringTerms;import org.elasticsearch.search.aggregations.bucket.terms.TermsBuilder;import org.elasticsearch.search.aggregations.bucket.terms.Terms.Bucket;import org.springframework.data.elasticsearch.core.ElasticsearchTemplate;import org.springframework.data.elasticsearch.core.ResultsExtractor;import org.springframework.data.elasticsearch.core.query.GetQuery;import org.springframework.data.elasticsearch.core.query.NativeSearchQueryBuilder;public class TestES {    static TransportClient transportClient;    static ElasticsearchTemplate elasticsearchTemplate;    public static void main(String[] args) {        elasticsearchTemplate=getElasticsearchTemplate("localhost","elasticsearch_bak",9303);        //queryForObject();//根據索引id查詢文檔        //queryForList();        //aggregationQuery();//彙總查詢        //count();        //indexExists(Yanan.class);        deleteById();    }    private static void deleteById() {    //    IndexQueryBuilder indexquery=new IndexQueryBuilder().withId("1").withObject(Yanan.class);        //String delete = elasticsearchTemplate.delete("yananindex", "yanantype", "10");//索引的id        String delete = elasticsearchTemplate.delete(Yanan.class, "10");//索引的id        System.out.println(delete);//刪除的索引的id    }    private static void indexExists(Class<Yanan> clazz) {        if(elasticsearchTemplate.indexExists(clazz)){            System.out.println("true");        }else{            System.out.println(false);        }    }    private static void count() {        NativeSearchQueryBuilder searchQuery=new NativeSearchQueryBuilder();        BoolQueryBuilder bqb = QueryBuilders.boolQuery();        bqb.must(QueryBuilders.termQuery("gender","female"));        searchQuery.withIndices("yananindex").withQuery(bqb);        long count = elasticsearchTemplate.count(searchQuery.build());        System.out.println(count);    }        private static void aggregationQuery() {        TermsBuilder termsBuilder = AggregationBuilders.terms("maleCount").field("name").size(10);        NativeSearchQueryBuilder searchQuery=new NativeSearchQueryBuilder();        BoolQueryBuilder bqb = QueryBuilders.boolQuery();        bqb.must(QueryBuilders.termQuery("gender","male"));        searchQuery.withIndices("yananindex").withQuery(bqb).addAggregation(termsBuilder);        Aggregations aggregations = elasticsearchTemplate.query(searchQuery.build(), new ResultsExtractor<Aggregations>() {            @Override            public Aggregations extract(SearchResponse response) {                return  response.getAggregations();            }        });        StringTerms modelTerms = (StringTerms)aggregations.asMap().get("maleCount");        List<Bucket> buckets = modelTerms.getBuckets();        for(int i=0;i<buckets.size();i++){            System.out.println(buckets.get(i).getKey()+"\t"+buckets.get(i).getDocCount());        }    }    private static void queryForList() {        NativeSearchQueryBuilder searchQuery = new NativeSearchQueryBuilder();        BoolQueryBuilder bqb = QueryBuilders.boolQuery();        bqb.must(QueryBuilders.termQuery("gender","male"));        searchQuery.withIndices("yananindex").withQuery(bqb);        List<Yanan> list = elasticsearchTemplate.queryForList(searchQuery.build(), Yanan.class);        for(int i=0;i<list.size();i++){            Yanan yanan = list.get(i);            System.out.println(yanan.getName()+"\t"+yanan.getGender()+"\t"+yanan.getId());        }            }    private static void queryForObject() {        GetQuery query = new GetQuery();        query.setId("1");// 索引的id        Yanan yanan = elasticsearchTemplate.queryForObject(query, Yanan.class);        System.out.println(yanan.getGender());        System.out.println(yanan.getName());        System.out.println(yanan.getId());// 實體的id    }        static ElasticsearchTemplate getElasticsearchTemplate(String ip,String clusterName,int port){//<a href="http://blog.csdn.net/ty4315/article/details/52434296" target="_blank">@參考文章1</a>,<a href="http://blog.csdn.net/ljc2008110/article/details/48630609" target="_blank">@參考文章2</a>        Settings setting = ImmutableSettings.settingsBuilder().put("cluster.name", clusterName)// 指定叢集名稱                .put("client.transport.sniff", true)// 啟動嗅探功能,用戶端去嗅探整個叢集的狀態,把叢集中其它機器的ip地址加到用戶端中,這樣做的好處是一般你不用手動設定叢集裡所有叢集的ip到串連用戶端,它會自動幫你添加,並且自動探索新加入叢集的機器。                .build();        // 建立用戶端 通過setting來建立,若不指定則預設連結的叢集名為elasticsearch 連結使用tcp協議即9303        transportClient = new TransportClient(setting);        TransportAddress transportAddress = new InetSocketTransportAddress(ip, port);        transportClient.addTransportAddresses(transportAddress);        elasticsearchTemplate = new ElasticsearchTemplate(transportClient);        return elasticsearchTemplate;    }}

 

elasticsearch常用JAVA API 執行個體

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.