`

elasticsearch java调用实例

 
阅读更多
http://outofmemory.cn/code-snippet/3780/Java-Client-call-ElasticSearch-do-quanwen-search-code-example

package com.es;

import java.io.IOException;

import org.elasticsearch.ElasticsearchException;
import org.elasticsearch.action.index.IndexResponse;
import org.elasticsearch.client.Client;
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.xcontent.XContentFactory;

public class Test {

    public static void main(String[] args) throws ElasticsearchException, IOException {
        Settings settings = ImmutableSettings.settingsBuilder().put("client.transport.sniff", true).put("cluster.name", "elasticsearch_useraudit").build();  
        Client client = new TransportClient(settings).addTransportAddress(new InetSocketTransportAddress("192.168.41.128", 9301));  
        IndexResponse response = client.prepareIndex("comment_index", "comment_ugc", "comment_123674")  
                .setSource( XContentFactory.jsonBuilder()  
                .startObject()  
                  .field("author", "569874")  
                  .field("author_name", "riching")  
                  .field("mark", 232)  
                  .field("body", "北京不错,但是人太多了")  
                  .field("createDate", "20130801175520")  
                  .field("valid", true)  
                .endObject())  
                .setTTL(8000)  
                .execute().actionGet();  
            System.out.println(response.getId());  
    }
}



另外一个例子:
package com.es;

import java.util.ArrayList;
import java.util.List;

import org.elasticsearch.action.index.IndexRequestBuilder;
import org.elasticsearch.action.index.IndexResponse;
import org.elasticsearch.action.search.SearchResponse;
import org.elasticsearch.client.Client;
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.index.query.QueryBuilder;
import org.elasticsearch.index.query.QueryBuilders;
import org.elasticsearch.search.SearchHit;
import org.elasticsearch.search.SearchHits;

/**
 * 
 *
 *  @version : 1.0
 *  
 *  @author  : 苏若年              <a href="mailto:DennisIT@163.com">发送邮件</a>
 *    
 *  @since   : 1.0        创建时间:    2013-4-8    上午11:34:04
 *     
 *  @function: TODO        
 *
 */
public class ElasticSearchHandler {

    private Client client;

    public ElasticSearchHandler(){    
        //使用本机做为节点
        this("192.168.41.128");
    }
    
    public ElasticSearchHandler(String ipAddress){
        //集群连接超时设置
        /*  
              Settings settings = ImmutableSettings.settingsBuilder().put("client.transport.ping_timeout", "10s").build();
            client = new TransportClient(settings);
         */
//        client = new TransportClient().addTransportAddress(new InetSocketTransportAddress("192.168.41.128", 9301));
        Settings settings = ImmutableSettings.settingsBuilder().put("client.transport.sniff", true).put("cluster.name", "elasticsearch_useraudit").build();  
         client = new TransportClient(settings).addTransportAddress(new InetSocketTransportAddress("192.168.41.128", 9301));  
    }
    
    
    /**
     * 建立索引,索引建立好之后,会在elasticsearch-0.20.6\data\elasticsearch\nodes\0创建所以你看
     * @param indexName  为索引库名,一个es集群中可以有多个索引库。 名称必须为小写
     * @param indexType  Type为索引类型,是用来区分同索引库下不同类型的数据的,一个索引库下可以有多个索引类型。
     * @param jsondata     json格式的数据集合
     * 
     * @return
     */
    public void createIndexResponse(String indexname, String type, List<String> jsondata){
        //创建索引库 需要注意的是.setRefresh(true)这里一定要设置,否则第一次建立索引查找不到数据
        IndexRequestBuilder requestBuilder = client.prepareIndex(indexname, type).setRefresh(true);
        for(int i=0; i<jsondata.size(); i++){
            requestBuilder.setSource(jsondata.get(i)).execute().actionGet();
        }     
         
    }
    
    /**
     * 创建索引
     * @param client
     * @param jsondata
     * @return
     */
    public IndexResponse createIndexResponse(String indexname, String type,String jsondata){
        IndexResponse response = client.prepareIndex(indexname, type)
            .setSource(jsondata)
            .execute()
            .actionGet();
        return response;
    }
    
    /**
     * 执行搜索
     * @param queryBuilder
     * @param indexname
     * @param type
     * @return
     */
    public List<Medicine>  searcher(QueryBuilder queryBuilder, String indexname, String type){
        List<Medicine> list = new ArrayList<Medicine>();
        SearchResponse searchResponse = client.prepareSearch(indexname).setTypes(type)
        .setQuery(queryBuilder)
        .execute()
        .actionGet();
        SearchHits hits = searchResponse.getHits();
        System.out.println("查询到记录数=" + hits.getTotalHits());
        SearchHit[] searchHists = hits.getHits();
        if(searchHists.length>0){
            for(SearchHit hit:searchHists){
                Integer id = (Integer)hit.getSource().get("id");
                String name =  (String) hit.getSource().get("name");
                String function =  (String) hit.getSource().get("funciton");
                list.add(new Medicine(id, name, function));
            }
        }
        return list;
    }
    
    
    public static void main(String[] args) {
        ElasticSearchHandler esHandler = new ElasticSearchHandler();
        List<String> jsondata = DataFactory.getInitJsonData();
        String indexname = "indexdemo";
        String type = "typedemo";
        esHandler.createIndexResponse(indexname, type, jsondata);
        //查询条件
//        QueryBuilder queryBuilder = QueryBuilders.inQuery("name", "感冒");
        QueryBuilder queryBuilder = QueryBuilders.boolQuery()
          .must(QueryBuilders.termQuery("id", 1));
        List<Medicine> result = esHandler.searcher(queryBuilder, indexname, type);
        for(int i=0; i<result.size(); i++){
            Medicine medicine = result.get(i);
            System.out.println("(" + medicine.getId() + ")药品名称:" +medicine.getName() + "\t\t" + medicine.getFunction());
        }
    }
}


package com.es;

import java.util.ArrayList;
import java.util.List;

/**
 * 
 *
 *  @version : 1.0
 *  
 *  @author  : 苏若年              <a href="mailto:DennisIT@163.com">发送邮件</a>
 *    
 *  @since   : 1.0        创建时间:    2013-4-8    上午11:38:15
 *     
 *  @function: TODO        
 *
 */
public class DataFactory {
    
    public static DataFactory dataFactory = new DataFactory();
    
    private DataFactory(){
        
    }
    
    public DataFactory getInstance(){
        return dataFactory;
    }
    
    public static List<String> getInitJsonData(){
        List<String> list = new ArrayList<String>();
        String data1  = JsonUtil.obj2JsonData(new Medicine(1,"银花 感冒 颗粒","功能主治:银花感冒颗粒 ,头痛,清热,解表,利咽。"));
        String data2  = JsonUtil.obj2JsonData(new Medicine(2,"感冒  止咳糖浆","功能主治:感冒止咳糖浆,解表清热,止咳化痰。"));
        String data3  = JsonUtil.obj2JsonData(new Medicine(3,"感冒灵颗粒","功能主治:解热镇痛。头痛 ,清热。"));
        String data4  = JsonUtil.obj2JsonData(new Medicine(4,"感冒  灵胶囊","功能主治:银花感冒颗粒 ,头痛,清热,解表,利咽。"));
        String data5  = JsonUtil.obj2JsonData(new Medicine(5,"仁和 感冒 颗粒","功能主治:疏风清热,宣肺止咳,解表清热,止咳化痰。"));
        list.add(data1);
        list.add(data2);
        list.add(data3);
        list.add(data4);
        list.add(data5);
        return list;
    }
}

package com.es;

import java.io.IOException;

import org.elasticsearch.common.xcontent.XContentBuilder;
import org.elasticsearch.common.xcontent.XContentFactory;

/**
 * 
 *
 *  @version : 1.0
 *  
 *  @author  : 苏若年              <a href="mailto:DennisIT@163.com">发送邮件</a>
 *    
 *  @since   : 1.0        创建时间:    2013-4-8    上午11:34:56
 *     
 *  @function: TODO        
 *
 */
public class JsonUtil {

    /**
     * 实现将实体对象转换成json对象
     * @param medicine    Medicine对象
     * @return
     */
    public static String obj2JsonData(Medicine medicine){
        String jsonData = null;
        try {
            //使用XContentBuilder创建json数据
            XContentBuilder jsonBuild = XContentFactory.jsonBuilder();
            jsonBuild.startObject()
            .field("id",medicine.getId())
            .field("name", medicine.getName())
            .field("funciton",medicine.getFunction())
            .endObject();
            jsonData = jsonBuild.string();
            System.out.println(jsonData);
        } catch (IOException e) {
            e.printStackTrace();
        }
        return jsonData;
    }

}

package com.es;

/**
 * 
 *
 *  @version : 1.0
 *  
 *  @author  : 苏若年              <a href="mailto:DennisIT@163.com">发送邮件</a>
 *    
 *  @since   : 1.0        创建时间:    2013-4-8    下午04:51:03
 *     
 *  @function: TODO        
 *
 */
public class Medicine {

    private Integer id;
    private String name;
    private String function;
    
    public Medicine() {
        super();
    }

    public Medicine(Integer id, String name, String function) {
        super();
        this.id = id;
        this.name = name;
        this.function = function;
    }
    
    //getter and  setter ()
    public String getFunction() {
        return function;
    }
    
    public void setFunction(String function) {
        this.function = function;
    }
    
    public Integer getId() {
        return id;
    }
    
    public void setId(Integer id) {
        this.id = id;
    }
    
    public String getName() {
        return name;
    }
    
    public void setName(String name) {
        this.name = name;
    }
}
分享到:
评论

相关推荐

    JAVA实现ElasticSearch的简单实例

    Java实现Elasticsearch的简单实例主要涉及以下几个关键知识点: 1. **Elasticsearch基础**:Elasticsearch(ES)是一个开源的、分布式全文搜索引擎,它提供了实时数据分析的能力,广泛用于日志分析、监控、搜索应用...

    ElasticSearch Java API 中文文档

    标题《ElasticSearch Java API 中文文档》表明本篇文档的主要内容是关于ElasticSearch的Java API的中文使用说明和相关知识点介绍。ElasticSearch是一个基于Lucene构建的开源搜索引擎,它提供了一个分布式、多用户...

    使用Java调用ElasticSearch提供的相关API进行数据搜索完整实例演示

    在本文中,我们将深入探讨如何使用Java调用Elasticsearch(ES)提供的API进行数据搜索。Elasticsearch是一个流行的开源全文搜索引擎,具有分布式、实时、可扩展性等特性,广泛应用于大数据分析和日志检索等领域。...

    基于Elasticsearch Java API的参考手册

    1. **节点(Node)**: Elasticsearch集群中的单个实例,可以是分布式系统中的任意一台服务器。 2. **集群(Cluster)**: 由一个或多个节点组成,共享相同的集群名称,共同存储数据并处理请求。 3. **索引(Index)**: 类似...

    elasticsearch java操作的api实例

    首先,让我们详细了解如何使用Java API与Elasticsearch进行交互: 1. **索引管理**: - **创建索引**:`IndicesClient.create()`方法用于创建新的索引。我们需要提供索引名称和一个可选的设置对象,如分片和副本的...

    Elasticsearch java工具类

    Elasticsearch提供了Java REST客户端,允许开发者直接通过Java代码与ES集群进行交互。这个工具类可能包含了如索引文档、查询、更新和删除文档等基本操作的封装,以及聚合、脚本等高级功能。例如,`IndexRequest`用于...

    elasticsearch Java代码实现

    首先,让我们从`ESManager.java`开始,这个类通常用于管理Elasticsearch实例,包括连接、配置和操作索引。在Java中,我们通常使用`TransportClient`或者`RestHighLevelClient`与Elasticsearch通信。`TransportClient...

    elasticsearch java api

    **Elasticsearch Java API**是Elasticsearch官方提供的用于与Elasticsearch服务器进行交互的Java客户端库。在Java应用程序中,我们通常会使用这个API来创建、查询、更新和删除索引中的数据。Elasticsearch 2.3版本的...

    java语言kafka数据批量导入到Elasticsearch实例

    消费kafka数据,然后批量导入到Elasticsearch,本例子使用的kafka版本0.10,es版本是6.4,使用bulk方式批量导入到es中,也可以一条一条的导入,不过比较慢。 &lt;groupId&gt;org.elasticsearch &lt;artifactId&gt;elastic...

    ElasticSearch Java API

    在博客《Elasticsearch Java API详解》中,作者分享了一个使用Java API操作Elasticsearch的实例,包括如何创建索引、插入数据、执行搜索和聚合。通过这个实例,你可以深入理解Elasticsearch Java API的使用方法和...

    基于elasticsearch java client封装的elasticsearch.zip

    Elasticsearch Java Client是Elasticsearch官方提供的Java语言客户端,它提供了丰富的API供开发者使用,涵盖了索引管理、搜索、聚合、更新、删除等操作。这个客户端不仅包含了低级别的RESTful通信,还提供了一种更...

    elasticsearch7.17.10-最新支持Java1.8版本

    6. **多租户**:一个Elasticsearch实例可以支持多个索引,每个索引有自己的设置和映射,实现资源隔离。 **Elasticsearch 7.17.10的新特性和改进:** 1. **性能优化**:此版本可能包含了针对查询速度、索引速度以及...

    elasticsearch离线JAVA API文档下载

    在开始使用Java API之前,需要将Elasticsearch的Java库添加到项目的依赖管理中。对于Maven项目,可以在`pom.xml`文件中添加如下依赖: ```xml &lt;groupId&gt;org.elasticsearch.client &lt;artifactId&gt;elasticsearch-...

    Elasticsearch之Java客户端Jest的全部依赖jar包

    本资源包含的是Jest客户端的全部依赖jar包,确保了在Java项目中使用Jest进行Elasticsearch操作时的完整性和稳定性。 首先,Jest客户端的核心功能在于其RESTful API的实现。REST(Representational State Transfer)...

    ElasticSearch Java 中文文档 5.6

    ElasticSearch 5.6版的Java API中文文档是针对Java开发者使用ElasticSearch的指导手册,它不仅翻译了官方文档,还包含了实际使用中遇到的问题和解决方案。 从文件内容来看,文档涉及到ElasticSearch Java客户端的多...

    java elasticsearch5.1.1,java Demo

    在Java代码中,首先需要创建一个RestHighLevelClient实例,它是与Elasticsearch通信的主要入口点: ```java RestHighLevelClient client = new RestHighLevelClient( RestClient.builder( new HttpHost(...

    elasticsearch集成spring开发实例

    在现代大数据分析和实时搜索领域,Elasticsearch(简称 ES)已经成为了广泛使用的工具。它是一个分布式、RESTful 风格的搜索和数据分析引擎,能够处理大量数据并提供快速响应。而Spring框架作为Java企业级应用的事实...

    Elasticsearch6.1.2 Java客户端

    **Elasticsearch 6.1.2 Java 客户端详解** Elasticsearch 是一个流行的、分布式的全文搜索引擎,常用于大数据分析、日志收集、实时搜索等场景。其6.1.2版本的Java客户端提供了丰富的API,使得开发者能够方便地在...

Global site tag (gtag.js) - Google Analytics