Elasticsearch简单操作(Java代码)
2017-11-01 19:29
399 查看
1.首先安装Elasticsearch,配置相关文件,并启动服务
2.创建项目,导入相关Jar包
3.创建ElasticsearchUtils类,里面包括初始化操作和创建索引、更新索引、删除索引、查询索引
(1)初始化操作,需要传入集群名称和ip地址,集群名称本例子使用elasticsearch配置文件中配置的cluster name,IP地址使用localhost
[java] view plain copy print?public class ElasticsearchUtils {
private Client client;
public ElasticsearchUtils(String clusterName, String ipAddress) {
Settings settings = ImmutableSettings
.settingsBuilder()
//设置集群名称
.put(”cluster.name”, clusterName)
.put(”client.transport.ignore_cluster_name”, false)
.put(”node.client”, true).put(“client.transport.sniff”, true)
.build();
client = new TransportClient(settings)
.addTransportAddress(new InetSocketTransportAddress(ipAddress,
9300));//此处端口号为9300
}
}
(2)创建索引
[java] view plain copy print?/** * 创建索引 * @param indexName 索引名称,相当于数据库名称 * @param typeName 索引类型,相当于数据库中的表名 * @param id id名称,相当于每个表中某一行记录的标识 * @param jsonData json数据 */ public void createIndex(String indexName, String typeName, String id, String jsonData) { IndexRequestBuilder requestBuilder = client.prepareIndex(indexName, typeName, id).setRefresh(true);//设置索引名称,索引类型,id requestBuilder.setSource(jsonData).execute().actionGet();//创建索引 }
(3)查询索引
[java] view plain copy print?/**
* 执行搜索
* @param indexname 索引名称
* @param type 索引类型
* @param queryBuilder 查询条件
* @return
*/
public SearchResponse searcher(String indexName, String typeName,
QueryBuilder queryBuilder) {
SearchResponse searchResponse = client.prepareSearch(indexName)
.setTypes(typeName).setQuery(queryBuilder).execute()
.actionGet();//执行查询
return searchResponse;
}
(4)更新索引
[java] view plain copy print?/**
* 更新索引
* @param indexName 索引名称
* @param typeName 索引类型
* @param id id名称
* @param jsonData json数据
*/
public void updateIndex(String indexName, String typeName, String id,
String jsonData) {
UpdateRequest updateRequest = new UpdateRequest();
updateRequest.index(indexName);//设置索引名称
updateRequest.id(id);//设置id
updateRequest.type(typeName);//设置索引类型
updateRequest.doc(jsonData);//更新数据
client.update(updateRequest).actionGet();//执行更新
}
(5)删除索引
[java] view plain copy print?/**
* 删除索引
* @param indexName
* @param typeName
* @param id
*/
public void deleteIndex(String indexName, String typeName, String id) {
client.prepareDelete(indexName, typeName, id).get();
}
4.创建测试类
[java] view plain copy print?package com.elasticsearch.test;
import org.elasticsearch.action.search.SearchResponse;
import org.elasticsearch.index.query.QueryBuilder;
import org.elasticsearch.index.query.QueryBuilders;
import org.elasticsearch.search.SearchHit;
import org.elasticsearch.search.SearchHits;
public class Test {
public static void main(String[] args) {
//创建对象,设置集群名称和IP地址
ElasticsearchUtils es = new ElasticsearchUtils(“im_shan”,
”localhost”);
String indexName = ”school”;//索引名称
String typeName = ”student”;//类型名称
String id = ”1”;
String jsonData = ”{“ + “\”name\”:\”kimchy\”,”
+ ”\”birth\”:\”1995-01-30\”,” + “\”email\”:\”kimchy@163.com\”“
+ ”}”;//json数据
//1.创建索引(ID可自定义也可以自动创建,此处使用自定义ID)
es.createIndex(indexName, typeName, id, jsonData);
//2.执行查询
//(1)创建查询条件
QueryBuilder queryBuilder = QueryBuilders.termQuery(”name”, “kimchy”);//搜索name为kimchy的数据
//(2)执行查询
SearchResponse searchResponse = es.searcher(indexName, typeName,
queryBuilder);
//(3)解析结果
SearchHits hits = searchResponse.getHits();
SearchHit[] searchHits = hits.getHits();
for (SearchHit searchHit : searchHits) {
String name = (String) searchHit.getSource().get(”name”);
String birth = (String) searchHit.getSource().get(”birth”);
String email = (String) searchHit.getSource().get(”email”);
System.out.println(name);
System.out.println(birth);
System.out.println(email);
}
//3.更新数据
jsonData = ”{“ + “\”name\”:\”jack\”,” + “\”birth\”:\”1996-01-30\”,”
+ ”\”email\”:\”jack@163.com\”“ + “}”;//json数据
es.updateIndex(indexName, typeName, id, jsonData);
//4.删除数据
es.deleteIndex(indexName, typeName, id);
}
}
1.创建索引之后,可以在浏览器输入http://localhost:9200/_plugin/head/
进行查看,可以发现索引已创建,index名称为school,type为student,id为1
2.查询索引,控制台会输出name为kimchy的birth、email的值
3.更新索引,此时再次进入http://localhost:9200/_plugin/head/
进行查看,发现内容已经改变
4.删除索引,代码执行后输入http://localhost:9200/_plugin/head/
查看,内容已清空
参考:http://www.tuicool.com/articles/R7RVJb
官方Java API:https://www.elastic.co/guide/en/elasticsearch/client/java-api/current/transport-client.html
源码下载:http://download.csdn.net/detail/lom9357bye/9656269
2.创建项目,导入相关Jar包
3.创建ElasticsearchUtils类,里面包括初始化操作和创建索引、更新索引、删除索引、查询索引
(1)初始化操作,需要传入集群名称和ip地址,集群名称本例子使用elasticsearch配置文件中配置的cluster name,IP地址使用localhost
[java] view plain copy print?public class ElasticsearchUtils {
private Client client;
public ElasticsearchUtils(String clusterName, String ipAddress) {
Settings settings = ImmutableSettings
.settingsBuilder()
//设置集群名称
.put(”cluster.name”, clusterName)
.put(”client.transport.ignore_cluster_name”, false)
.put(”node.client”, true).put(“client.transport.sniff”, true)
.build();
client = new TransportClient(settings)
.addTransportAddress(new InetSocketTransportAddress(ipAddress,
9300));//此处端口号为9300
}
}
public class ElasticsearchUtils { private Client client; publi 13eed c ElasticsearchUtils(String clusterName, String ipAddress) { Settings settings = ImmutableSettings .settingsBuilder() //设置集群名称 .put("cluster.name", clusterName) .put("client.transport.ignore_cluster_name", false) .put("node.client", true).put("client.transport.sniff", true) .build(); client = new TransportClient(settings) .addTransportAddress(new InetSocketTransportAddress(ipAddress, 9300));//此处端口号为9300 } }
(2)创建索引
[java] view plain copy print?/** * 创建索引 * @param indexName 索引名称,相当于数据库名称 * @param typeName 索引类型,相当于数据库中的表名 * @param id id名称,相当于每个表中某一行记录的标识 * @param jsonData json数据 */ public void createIndex(String indexName, String typeName, String id, String jsonData) { IndexRequestBuilder requestBuilder = client.prepareIndex(indexName, typeName, id).setRefresh(true);//设置索引名称,索引类型,id requestBuilder.setSource(jsonData).execute().actionGet();//创建索引 }
/** * 创建索引 * @param indexName 索引名称,相当于数据库名称 * @param typeName 索引类型,相当于数据库中的表名 * @param id id名称,相当于每个表中某一行记录的标识 * @param jsonData json数据 */ public void createIndex(String indexName, String typeName, String id, String jsonData) { IndexRequestBuilder requestBuilder = client.prepareIndex(indexName, typeName, id).setRefresh(true);//设置索引名称,索引类型,id requestBuilder.setSource(jsonData).execute().actionGet();//创建索引 }
(3)查询索引
[java] view plain copy print?/**
* 执行搜索
* @param indexname 索引名称
* @param type 索引类型
* @param queryBuilder 查询条件
* @return
*/
public SearchResponse searcher(String indexName, String typeName,
QueryBuilder queryBuilder) {
SearchResponse searchResponse = client.prepareSearch(indexName)
.setTypes(typeName).setQuery(queryBuilder).execute()
.actionGet();//执行查询
return searchResponse;
}
/** * 执行搜索 * @param indexname 索引名称 * @param type 索引类型 * @param queryBuilder 查询条件 * @return */ public SearchResponse searcher(String indexName, String typeName, QueryBuilder queryBuilder) { SearchResponse searchResponse = client.prepareSearch(indexName) .setTypes(typeName).setQuery(queryBuilder).execute() .actionGet();//执行查询 return searchResponse; }
(4)更新索引
[java] view plain copy print?/**
* 更新索引
* @param indexName 索引名称
* @param typeName 索引类型
* @param id id名称
* @param jsonData json数据
*/
public void updateIndex(String indexName, String typeName, String id,
String jsonData) {
UpdateRequest updateRequest = new UpdateRequest();
updateRequest.index(indexName);//设置索引名称
updateRequest.id(id);//设置id
updateRequest.type(typeName);//设置索引类型
updateRequest.doc(jsonData);//更新数据
client.update(updateRequest).actionGet();//执行更新
}
/** * 更新索引 * @param indexName 索引名称 * @param typeName 索引类型 * @param id id名称 * @param jsonData json数据 */ public void updateIndex(String indexName, String typeName, String id, String jsonData) { UpdateRequest updateRequest = new UpdateRequest(); updateRequest.index(indexName);//设置索引名称 updateRequest.id(id);//设置id updateRequest.type(typeName);//设置索引类型 updateRequest.doc(jsonData);//更新数据 client.update(updateRequest).actionGet();//执行更新 }
(5)删除索引
[java] view plain copy print?/**
* 删除索引
* @param indexName
* @param typeName
* @param id
*/
public void deleteIndex(String indexName, String typeName, String id) {
client.prepareDelete(indexName, typeName, id).get();
}
/** * 删除索引 * @param indexName * @param typeName * @param id */ public void deleteIndex(String indexName, String typeName, String id) { client.prepareDelete(indexName, typeName, id).get(); }
4.创建测试类
[java] view plain copy print?package com.elasticsearch.test;
import org.elasticsearch.action.search.SearchResponse;
import org.elasticsearch.index.query.QueryBuilder;
import org.elasticsearch.index.query.QueryBuilders;
import org.elasticsearch.search.SearchHit;
import org.elasticsearch.search.SearchHits;
public class Test {
public static void main(String[] args) {
//创建对象,设置集群名称和IP地址
ElasticsearchUtils es = new ElasticsearchUtils(“im_shan”,
”localhost”);
String indexName = ”school”;//索引名称
String typeName = ”student”;//类型名称
String id = ”1”;
String jsonData = ”{“ + “\”name\”:\”kimchy\”,”
+ ”\”birth\”:\”1995-01-30\”,” + “\”email\”:\”kimchy@163.com\”“
+ ”}”;//json数据
//1.创建索引(ID可自定义也可以自动创建,此处使用自定义ID)
es.createIndex(indexName, typeName, id, jsonData);
//2.执行查询
//(1)创建查询条件
QueryBuilder queryBuilder = QueryBuilders.termQuery(”name”, “kimchy”);//搜索name为kimchy的数据
//(2)执行查询
SearchResponse searchResponse = es.searcher(indexName, typeName,
queryBuilder);
//(3)解析结果
SearchHits hits = searchResponse.getHits();
SearchHit[] searchHits = hits.getHits();
for (SearchHit searchHit : searchHits) {
String name = (String) searchHit.getSource().get(”name”);
String birth = (String) searchHit.getSource().get(”birth”);
String email = (String) searchHit.getSource().get(”email”);
System.out.println(name);
System.out.println(birth);
System.out.println(email);
}
//3.更新数据
jsonData = ”{“ + “\”name\”:\”jack\”,” + “\”birth\”:\”1996-01-30\”,”
+ ”\”email\”:\”jack@163.com\”“ + “}”;//json数据
es.updateIndex(indexName, typeName, id, jsonData);
//4.删除数据
es.deleteIndex(indexName, typeName, id);
}
}
package com.elasticsearch.test; import org.elasticsearch.action.search.SearchResponse; import org.elasticsearch.index.query.QueryBuilder; import org.elasticsearch.index.query.QueryBuilders; import org.elasticsearch.search.SearchHit; import org.elasticsearch.search.SearchHits; public class Test { public static void main(String[] args) { //创建对象,设置集群名称和IP地址 ElasticsearchUtils es = new ElasticsearchUtils("im_shan", "localhost"); String indexName = "school";//索引名称 String typeName = "student";//类型名称 String id = "1"; String jsonData = "{" + "\"name\":\"kimchy\"," + "\"birth\":\"1995-01-30\"," + "\"email\":\"kimchy@163.com\"" + "}";//json数据 //1.创建索引(ID可自定义也可以自动创建,此处使用自定义ID) es.createIndex(indexName, typeName, id, jsonData); //2.执行查询 //(1)创建查询条件 QueryBuilder queryBuilder = QueryBuilders.termQuery("name", "kimchy");//搜索name为kimchy的数据 //(2)执行查询 SearchResponse searchResponse = es.searcher(indexName, typeName, queryBuilder); //(3)解析结果 SearchHits hits = searchResponse.getHits(); SearchHit[] searchHits = hits.getHits(); for (SearchHit searchHit : searchHits) { String name = (String) searchHit.getSource().get("name"); String birth = (String) searchHit.getSource().get("birth"); String email = (String) searchHit.getSource().get("email"); System.out.println(name); System.out.println(birth); System.out.println(email); } //3.更新数据 jsonData = "{" + "\"name\":\"jack\"," + "\"birth\":\"1996-01-30\"," + "\"email\":\"jack@163.com\"" + "}";//json数据 es.updateIndex(indexName, typeName, id, jsonData); //4.删除数据 es.deleteIndex(indexName, typeName, id); } }
1.创建索引之后,可以在浏览器输入http://localhost:9200/_plugin/head/
进行查看,可以发现索引已创建,index名称为school,type为student,id为1
2.查询索引,控制台会输出name为kimchy的birth、email的值
3.更新索引,此时再次进入http://localhost:9200/_plugin/head/
进行查看,发现内容已经改变
4.删除索引,代码执行后输入http://localhost:9200/_plugin/head/
查看,内容已清空
参考:http://www.tuicool.com/articles/R7RVJb
官方Java API:https://www.elastic.co/guide/en/elasticsearch/client/java-api/current/transport-client.html
源码下载:http://download.csdn.net/detail/lom9357bye/9656269
相关文章推荐
- Elasticsearch简单操作(Java代码)
- elasticsearch之javaAPI简单操作增删改、批量处理(一)
- Java连接MySQL数据库及简单操作代码
- elasticsearch常用操作URL与java实例代码
- 基于Elasticsearch2.1.1的JavaAPI基本操作代码示例
- Java连接MySQL数据库及简单操作代码
- Redis简单操作Java代码
- Java连接MySQL数据库及简单操作代码
- java代码简单操作es高亮
- Java简单操作mysql数据库代码存档+处理中文乱码问题
- javascript和java中判断润年简单的代码
- JAVA Stream 简单操作
- 代码简单描述 初学Java语言之多态初体验
- Java读取文件的简单代码
- 这么详细的分类 Java源代码网站你见过没有? Java中的每一个方法,每一个操作,每一个函数,每一个类.每一个属性,每一个事件都有相应的范例代码
- java中操作xml几种方式的比较和代码示例(DOM,SAX,JDOM,DOM4J)
- java中操作xml几种方式的比较和代码示例(DOM,SAX,JDOM,DOM4J)
- 我做的一个java简单文本编辑器代码
- c#简单数据库插入操作代码
- JAVA文件操作类和文件夹的操作代码示例