elasticsearch-1.2.1客户端连接DEMO

1.下载elasticsearch-1.2.1的zip包,解压之后 双击bin目录中的 elasticsearch.bat(针对windows系统) 启动服务器(默认监听9200端口)

访问 http://localhost:9200 出现下边的json数据则说明启动成功

2.客户端连接的代码示例:

package com.jiaoyiping.othersimple;

/**
 * Created with IntelliJ IDEA.
 * User: 焦一平
 * Date: 14-7-8
 * Time: 下午11:57
 * To change this template use File | Settings | File Templates.
 */
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.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.slf4j.Logger;
import org.slf4j.LoggerFactory;

public class ElasticSearchHandler {

    Logger logger = LoggerFactory.getLogger(ElasticSearchHandler.class);
    private Client client;

    public ElasticSearchHandler(){
    //使用本机做为节点
        this("127.0.0.1");
    }

    public ElasticSearchHandler(String ipAddress){
        client = new TransportClient().addTransportAddress(new InetSocketTransportAddress(ipAddress, 9300));
    }

    /**
     * @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));
            }
        }
        client.close();//关闭连接(如果在这里不关闭的话会报:远程主机强制关闭了一个连接)
        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.queryString("name:姓名") ;
        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());
        }
    }
}

elasticsearch-1.2.1客户端连接DEMO

时间: 2024-10-13 04:30:09

elasticsearch-1.2.1客户端连接DEMO的相关文章

Elasticsearch - java客户端连接

写在前面的话:读书破万卷,编码如有神-------------------------------------------------------------------- 最简单的在java客户端连接es服务器 (仅作为快速简单使用demo) 1 package com.es.util.elasticsearch; 2 3 import lombok.Data; 4 import org.apache.log4j.Logger; 5 import org.elasticsearch.actio

JAVA SOCKET网络编程,服务端接收多个客户端连接的实现

这是基于前面一篇文章的一个简单扩展,当然这不是最好的实现 服务端如果要想接收多个客户端连接,必须死循环去接收新的客户端的连接请求,一个完整的客户端服务端socket连接通过一个线程来维护 package com.tree.demo.socket; import java.io.IOException; import java.io.InputStream; import java.io.OutputStream; import java.io.PrintWriter; import java.n

centos pptp 客户端连接vpn

vpn翻墙现在很普遍,无论是个人还是公司,都会用的到.对于个人实现很容易,直接购买一个云主机,现在的云主机都有这样的服务,购买后直接就可以使用.有的vpn对使用也有一定数量限制,如:只允许多少个客户端连接,但对于公司来说,根本无法满足. 所以经过摸索总于有了答案.通过跳转的方法实现,在云主机上搭建pptp vpn,再在公司内部找一台机器搭建shadowsocks,通过它可以实现智能翻墙,很方便,一个账号多人可以使用,vpn账号也很安全,在公司外是无法使用的.是不是很棒. 下面介绍公司内网机器vp

PL/SQL在win7/win8 x64位下使用客户端连接oracle

新做了win8 x64位的系统.需要使用plsql连接oracle数据库.之前的机器装有64位的oracle11g,plsql可以直接找到oracle_home连接到数据库. 这次不想在本地安装数据库,因此只装了一个32位的数据库客户端.配置环境变量时遇到一些小问题,在此记录下来. 1.下载oracle客户端,然后解压到任意目录下 2.安装好plsql,然后配置plsql的oracle_home和oci库的地址 plsql的preference设置 ORACLE_HOME:F:\oracle\p

使用windows server2012时FileZilla客户端连接时报150 Opening data channel for directory listing of &quot;/&quot; 响应:425 Can&#39;t open data connection

425 Can't open data connection 和 读取目录列表失败 问题解决 这个问题主要是由于使用Passive Mode模式造成的,解决这个问题很简单: 1.在ftp服务软件中设置指定端口地址范围,允许Passive Mode使用,比如60000-60020 2.然后在ftp服务器的系统防火墙上打开这些tcp端口,比如是60000-60020,如果使用windows自带的防火墙,就一条一条的增加,20行有点麻烦,但是可以解决. 如果ftp用户较多,可以扩大端口范围. 3.如果

Centos6.7+openvpn配置Linux客户端连接,基于证书访问(三)

Linux 做为客户端连接 openvpn 服务,同样需要安装 openvpn 的软件及相关软件. 和服务器端的配置一样,先做时间同步,并添加定时任务 /usr/sbin/ntpdate time.windows.com echo '#time sync' >> /var/spool/cron/root echo '*/5 * * * * /usr/sbin/ntpdate pool.ntp.org > /dev/null 2>&1' >> /var/spool

配置ORACLE 客户端连接到数据库

--================================= -- 配置ORACLE 客户端连接到数据库 --================================= Oracle 客户端连接到Oracle 数据库服务器貌似不同于SQL serve中的网络配置,其实不然,只不过所有的SQL server 运行于Windows平台,故很多配置直接集成到了操作系统之中.所以无需配置客户端即可连接到服务器.Oracle 客户端连接到数据库依赖于Oracle Net.Oracle提供

Redis 客户端连接

Redis 通过监听一个 TCP 端口或者 Unix socket 的方式来接收来自客户端的连接,当一个连接建立后,Redis 内部会进行以下一些操作: 首先,客户端 socket 会被设置为非阻塞模式,因为 Redis 在网络事件处理上采用的是非阻塞多路复用模型. 然后为这个 socket 设置 TCP_NODELAY 属性,禁用 Nagle 算法 然后创建一个可读的文件事件用于监听这个客户端 socket 的数据发送 最大连接数 在 Redis2.4 中,最大连接数是被直接硬编码在代码里面的

Ruby操作MongoDB(进阶)-创建数据库客户端连接

在Ruby的MongoDB2.4.3驱动版本中,通过创建一个Mongo::Client对象来构建一个Ruby的数据库连接.Mongo::Client构造器提供两种构造方式:一是通过提供主机列表和一些可选参数,另外还有通过一个连接URI.创建好的数据库连接默认连接到admin数据库. 1.使用Mongo::Client创建数据库客户端连接 1.1. 单服务器模式创建数据库连接 在单服务器模式下创建数据库连接,只需提供一个主机连接参数.另外,还可以通过消除自动发现步骤强制将集群拓扑转换为单机模式.可