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/ ...
随机推荐
- SUPERSOCKET 客户端
SUPERSOCKET.CLIENTENGINE 简单使用 2015年5月27日 HYJIACAN 发表回复 阅读 11,105 次 江大没有给ClientEngine的Demo,一直没有找到其它的. ...
- python的requests快速上手、高级用法和身份认证
https://blog.csdn.net/qq_25134989/article/details/78800209 快速上手 迫不及待了吗?本页内容为如何入门 Requests 提供了很好的指引.其 ...
- 使用kolla安装的openstack mariadb为集群所有节点无法启动
当在做测试时,把所有的openstack节点都关机,再开启做测试时,发现mariadb galera集群启不来,相当于所有的mariadb集群都停止了(跟所有节点断电情况相似),这时候怎么办呢,重新建 ...
- Ambari安装常见问题
参考自: http://blog.csdn.net/xingxc111/article/details/70667574 http://blog.csdn.net/xfg0218/article/de ...
- Java MyBatis insert数据库数据后返回主键
<selectKey keyProperty="id" resultType="java.lang.Long" order="AFTER&quo ...
- Ribbon 常用配置
配置参数 默认值 说明 <client>.<namespace>.listOfServers 配置服务器列表 <client>.<namespace>. ...
- Php文件上传类class.upload.php
简介 Class.upload.php是用于管理上传文件的php文件上传类, 它可以帮助你快速的给自己的网站集成上传文件功能.不仅如此,此分类还有一些列的处理功能,可以对上传的文件或者本地的文件进行处 ...
- IndexR
IndexR是由舜飞科技研发的实时OLAP系统.于 2017 年 1 月初正式开源,目前已经更新至 0.6.1 版本,其作者认为IndexR具有以下特点: 超大数据集,低查询延时(超大数据集由HDFS ...
- delphi中Time消息的使用方法
unit Unit1; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms ...
- ASP.NET Web APIs 基于令牌TOKEN验证的实现(保存到DB的Token)
http://www.cnblogs.com/niuww/p/5639637.html 保存到DB的Token 基于.Net Framework 4.0 Web API开发(4):ASP.NET We ...