Elasticsearch的JavaAPI
获取客户端对象
public class App { private TransportClient client; //获取客户端对象
@Before
public void getClinet() throws UnknownHostException {
Settings settings = Settings.builder().put("cluster.name", "my-application").build(); //获得客户端对象
client = new PreBuiltTransportClient(settings); client.addTransportAddress(new InetSocketTransportAddress(InetAddress.getByName("192.168.1.11"), 9300));
System.out.println(client.toString()); }
## 创建索引
//创建索引
@Test
public void createIndex() {
client.admin().indices().prepareCreate("blog1").get();
client.close();
} //删除索引
@Test
public void deleteIndex() {
client.admin().indices().prepareDelete("blog").get();
client.close();
}
新建文档
//新建文档
@Test
public void createIndexByJson() {
//创建文档内容 String json = "{" + "\"id\":\"1\"," + "\"title\":\"基于Lucene的搜索服务器\","
+ "\"content\":\"它提供了一个分布式多用户能力的全文搜索引擎,基于RESTful web接口\"" + "}"; //创建
IndexResponse response = client.prepareIndex("blog", "article", "1").setSource(json).execute().actionGet();
//打印返回值
System.out.println("索引" + response.getIndex());
System.out.println("类型" + response.getType());
System.out.println("id" + response.getId());
System.out.println("结果" + response.getResult());
client.close();
} //创建文档以hashmap
@Test
public void createIndexBymap() {
HashMap<String, Object> json = new HashMap<String, Object>(); json.put("id", "2");
json.put("title", "hph");
json.put("content", "博客 hph.blog");
IndexResponse response = client.prepareIndex("blog", "article", "2").setSource(json).execute().actionGet();
//打印返回值
System.out.println("索引" + response.getIndex());
System.out.println("类型" + response.getType());
System.out.println("id" + response.getId());
System.out.println("结果" + response.getResult());
client.close();
}
//创建文档以hashmap
@Test
public void createIndexBymap() {
HashMap<String, Object> json = new HashMap<String, Object>(); json.put("id", "2");
json.put("title", "hph");
json.put("content", "博客 hph.blog");
IndexResponse response = client.prepareIndex("blog", "article", "2").setSource(json).execute().actionGet();
//打印返回值
System.out.println("索引" + response.getIndex());
System.out.println("类型" + response.getType());
System.out.println("id" + response.getId());
System.out.println("结果" + response.getResult());
client.close(); } //创建文档已bulder
@Test
public void createIndexbyBulider() throws IOException {
XContentBuilder builder = XContentFactory.jsonBuilder().startObject().field("id", "4").field("title", "博客").field("content", "hphblog.cn").endObject();
IndexResponse response = client.prepareIndex("blog", "article", "3").setSource(builder).execute().actionGet();
//打印返回值
System.out.println("索引" + response.getIndex());
System.out.println("类型" + response.getType());
System.out.println("id" + response.getId());
System.out.println("结果" + response.getResult());
client.close();
}
查询索引
//单个索引查询
@Test
public void queryIndex() {
//查询
GetResponse response = client.prepareGet("blog", "article", "2").get(); //打印
System.out.println(response.getSourceAsString()); //关闭资源
client.close(); } //多个索引查询
@Test
public void queryMultiIndex() { //查询
MultiGetResponse response = client.prepareMultiGet().add("blog", "article", "3")
.add("blog", "article", "1")
.add("blog", "article", "2").get(); for (MultiGetItemResponse multiGetItemResponse : response) {
GetResponse response1 = multiGetItemResponse.getResponse(); //判断是否存在
if (response1.isExists()) {
System.out.println(response1.getSourceAsString());
}
}
} //更改数据
@Test
public void update() throws ExecutionException, InterruptedException, IOException {
UpdateRequest updateRequest = new UpdateRequest("blog", "article", "2");
updateRequest.doc(XContentFactory.jsonBuilder().startObject().field("id", "2")
.field("title", "hphblog").field("content", "大数据博客学习技术分享").endObject()
); UpdateResponse response = client.update(updateRequest).get(); //打印返回值
System.out.println("索引" + response.getIndex());
System.out.println("类型" + response.getType());
System.out.println("id" + response.getId());
System.out.println("结果" + response.getResult());
client.close(); }
更新文档
//更新文档updaset
@Test
public void upsert() throws IOException, ExecutionException, InterruptedException {
//没有就创建
IndexRequest indexRequest = new IndexRequest("blog", "article", "5");
indexRequest.source(XContentFactory.jsonBuilder().startObject().field("id", "5")
.field("title", "大数据技术分享的学习").field("content", "大数据技术的分享与学习希望和大家多多交流").endObject
());
//有文档内容就更新
UpdateRequest updateRequest = new UpdateRequest("blog", "article", "5");
updateRequest.doc(XContentFactory.jsonBuilder().startObject().field("id", "5")
.field("title", "hphblog").field("content", "技术分享、技术交流、技术学习").endObject()
); updateRequest.upsert(indexRequest); UpdateResponse response = client.update(updateRequest).get(); //打印返回值
System.out.println("索引" + response.getIndex());
System.out.println("类型" + response.getType());
System.out.println("id" + response.getId());
System.out.println("结果" + response.getResult());
client.close(); }
删除文档
//删除文档
@Test
public void delete() {
client.prepareDelete("blog", "article", "5").get();
client.close(); }
查询所有
//查询所有
@Test
public void matchAllquery() {
//1.执行查询
SearchResponse response = client.prepareSearch("blog").setTypes("article").setQuery(QueryBuilders.matchAllQuery()).get(); SearchHits hits = response.getHits(); System.out.println("查询的结果为" + hits.getTotalHits()); Iterator<SearchHit> iterator = hits.iterator();
while (iterator.hasNext()) {
SearchHit next = iterator.next();
System.out.println(next.getSourceAsString());
} client.close();
} //分词查询
@Test
public void query() {
//1.执行查询
SearchResponse response = client.prepareSearch("blog").setTypes("article").setQuery(QueryBuilders.queryStringQuery("学习全文")).get(); SearchHits hits = response.getHits(); System.out.println("查询的结果为" + hits.getTotalHits()); Iterator<SearchHit> iterator = hits.iterator();
while (iterator.hasNext()) {
SearchHit next = iterator.next();
System.out.println(next.getSourceAsString());
} client.close();
}
通配符查询
//通配符查询
@Test
public void wildcardQuery() {
//1.执行查询
SearchResponse response = client.prepareSearch("blog").setTypes("article").setQuery(QueryBuilders.wildcardQuery("content", "分")).get(); SearchHits hits = response.getHits(); System.out.println("查询的结果为" + hits.getTotalHits()); Iterator<SearchHit> iterator = hits.iterator();
while (iterator.hasNext()) {
SearchHit next = iterator.next();
System.out.println(next.getSourceAsString());
} client.close();
}
模糊查询
//模糊查询
@Test
public void fuzzyQuery() {
//1.执行查询
SearchResponse response = client.prepareSearch("blog").setTypes("article").setQuery(QueryBuilders.fuzzyQuery("title", "LuceNe")).get(); SearchHits hits = response.getHits(); System.out.println("查询的结果为" + hits.getTotalHits()); Iterator<SearchHit> iterator = hits.iterator();
while (iterator.hasNext()) {
SearchHit next = iterator.next();
System.out.println(next.getSourceAsString());
} client.close();
} //映射相关的操作
@Test
public void createMapping() throws Exception { // 1设置mapping
XContentBuilder builder = XContentFactory.jsonBuilder()
.startObject()
.startObject("article")
.startObject("properties")
.startObject("id1")
.field("type", "string")
.field("store", "yes")
.endObject()
.startObject("title2")
.field("type", "string")
.field("store", "no")
.endObject()
.startObject("content")
.field("type", "string")
.field("store", "yes")
.endObject()
.endObject()
.endObject()
.endObject();
添加mapping
// 2 添加mapping
PutMappingRequest mapping = Requests.putMappingRequest("blog1").type("article").source(builder); client.admin().indices().putMapping(mapping).get(); // 3 关闭资源
client.close();
}
原文:http://hphblog.cn/2018/12/16/Elasticsearch%E7%9A%84JavaAPI/
Elasticsearch的JavaAPI的更多相关文章
- Elasticsearch的javaAPI之percolator
Elasticsearch的javaAPI之percolator percolator同意一个在index中注冊queries,然后发送包括doc的请求,返回得到在index中注冊过的而且匹配doc的 ...
- elasticsearch的javaAPI之query
elasticsearch的javaAPI之query API the Search API同意运行一个搜索查询,返回一个与查询匹配的结果(hits). 它能够在跨一个或多个index上运行, 或者一 ...
- Elasticsearch的javaAPI之get,delete,bulk
Elsasticsearch的javaAPI之get get API同意依据其id获得指定index中的基于json document.以下的样例得到一个JSON document(index为twi ...
- Elasticsearch的javaAPI之query dsl-queries
Elasticsearch的javaAPI之query dsl-queries 和rest query dsl一样,elasticsearch提供了一个完整的Java query dsl. 查询建造者 ...
- elasticsearch的javaAPI之index
Index API 原文:http://www.elasticsearch.org/guide/en/elasticsearch/client/java-api/current/index_.html ...
- ElasticSearch的javaAPI之Client
翻译的原文:http://www.elasticsearch.org/guide/en/elasticsearch/client/java-api/current/client.html#node-c ...
- Elasticsearch JavaApi
官网JavaApi地址:https://www.elastic.co/guide/en/elasticsearch/client/java-api/current/java-search.html 博 ...
- ElasticSearch的基本用法与集群搭建
一.简介 ElasticSearch和Solr都是基于Lucene的搜索引擎,不过ElasticSearch天生支持分布式,而Solr是4.0版本后的SolrCloud才是分布式版本,Solr的分布式 ...
- ElasticSearch Java api 详解_V1.0
/×××××××××××××××××××××××××××××××××××××××××/ Author:xxx0624 HomePage:http://www.cnblogs.com/xxx0624/ ...
随机推荐
- vue-router 与 react-router 设计理念上的区别
vue-router 与 react-router 设计理念上的区别: 区别 vue-router react-router 改成history mode: 'history' 直接使用 react- ...
- LOJ 2587 「APIO2018」铁人两项——圆方树
题目:https://loj.ac/problem/2587 先写了 47 分暴力. 对于 n<=50 的部分, n3 枚举三个点,把图的圆方树建出来,合法条件是 c 是 s -> f 路 ...
- JMeterPlugins插件监听器学习-监听器
JMeterPlugins插件监听器学习-监听器 1.jp@gc - Actiive Threads Over Time:不同时间活动用户数量展示(图表)2.jp@gc - AutoStop List ...
- java 多线程详解
一.重点 重点: 1.创建和启动线程 2.实现线程调度 3.实现线程同步 4.实现线程通信 1.为什么要学习多线程? 当多个人访问电脑上同一资源的时候,要用到多线程,让每个人感觉很多电脑同时为多个人服 ...
- Hanlp在java中文分词中的使用介绍
项目结构 该项目中,.jar和data文件夹和.properties需要从官网/github下载,data文件夹下载 项目配置 修改hanlp.properties: 1 #/Test/src/han ...
- WyBox用usb口驱动4G模块EC20
按照: http://wiki.openwrt.org/doc/howtobuild/wireless-router-with-a-3g-dongle 然后: 进入linux-3.10.49/driv ...
- WPF DataGrid 导出Excel
#region Excel导出 private void btnExportExcel_Click(object sender, RoutedEventArgs e) { Export(this.dg ...
- IIS性能优化篇
首先程序的优化,不只是沿着一个点进行,往往都是程序配合服务器及数据服务器配置提升性能. 第一步:数据库链接优化 在数据库链接字符串中添加“Max Pool Size=32767;”,32767是数据库 ...
- consul之:ACL配置使用
consul自带ACL控制功能,看了很多遍官方文档,没有配置步骤https://www.consul.io/docs/internals/acl.html 主要对各种配置参数解释,没有明确的步骤,当时 ...
- mysql查询优化之四:优化特定类型的查询
本文将介绍如何优化特定类型的查询. 1.优化count()查询count()聚合函数,以及如何优化使用了该函数的查询,很可能是mysql中最容易被误解的前10个话题之一 count() 是一个特殊的函 ...