Elasticsearch 学习笔记

[size=large][color=green]安装 Elasticsearch
1:解压下载的安装包 elasticsearch-1.7.2.zip
修改 cluster.name: es(集群状态名字一致)
2:在https://github.com/elasticsearch/elasticsearch-servicewrapper下载该插件后,解压缩。将service目录拷贝到elasticsearch目录的bin目录下。
3: 安装es-head插件
进入elasticsearch/bin目录,输入命令./plugin --install mobz/elasticsearch-head 安装head插件
4:将 Elasticsearch scp 到其他机器
5:启动 Elasticsearch
在linux环境,进入ES目录的bin/service目录,如下图,运行命令sh elasticsearch start 访问地址 http://hadoop1:9200/_plugin/head/[/color][/size]


Elasticsearch JavaAPI

添加 Elasticsearch maven 依赖
 <dependency>
<groupId>org.elasticsearch</groupId>
<artifactId>elasticsearch</artifactId>
<version>1.7.2</version>
</dependency>


package test;

import java.io.IOException;

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

import entity.User;
/*
* 返回json 数据
*/
public class JsonUtil {
public static String obj2JsonData(User user){
String jsonData = null;
try {
//使用XContentBuilder创建json数据
XContentBuilder jsonBuild = XContentFactory.jsonBuilder();
jsonBuild.startObject()
.field("id",user.getId())
.field("name", user.getName())
.field("pwd",user.getPwd())
.endObject();
jsonData = jsonBuild.string();
System.out.println(jsonData);
} catch (IOException e) {
e.printStackTrace();
}
return jsonData;
}
}

package test;

import java.net.InetSocketAddress;
import java.util.ArrayList;
import java.util.List;

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.common.xcontent.XContentBuilder;
import org.elasticsearch.index.query.QueryBuilder;
import org.elasticsearch.index.query.QueryBuilders;
import org.elasticsearch.search.SearchHit;
import org.elasticsearch.search.SearchHits;

import entity.User;

public class ElasticsearchTest {
Client client;
/*
* 初始化client
*/
public ElasticsearchTest() {
client = new TransportClient()
.addTransportAddress(new InetSocketTransportAddress("hadoop1",9300));
}
/*
* 添加
*/
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<User> searcher(QueryBuilder queryBuilder, String indexname,
String type) {
List<User> list = new ArrayList<User>();
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("pwd");
list.add(new User(id, name, function));
}
}
return list;
}

public static void main(String[] args) {

ElasticsearchTest es = new ElasticsearchTest();
// User user = new User();
// user.setId(1);
// user.setName("张三");
// user.setPwd("123");
// String jsondata = JsonUtil.obj2JsonData(user);
String indexname = "indexdemo";
String type = "typedemo";
// es.createIndexResponse(indexname, type, jsondata);
// 查询条件
QueryBuilder queryBuilder = QueryBuilders.termQuery("name", "张");
/*
* QueryBuilder queryBuilder = QueryBuilders.boolQuery()
* .must(QueryBuilders.termQuery("id", 1));
*/
List<User> result = es.searcher(queryBuilder, indexname, type);
for (User us : result) {
System.out.println(us.getName());
}
}

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值