ElasticSearch(二)
来源:互联网 发布:nginx 允许指定目录 编辑:程序博客网 时间:2024/05/18 18:52
ElasticSearch(二)
下面说一下es的API 此前针对5.6.3版本
MAVEN依赖:
<dependency> <groupId>org.elasticsearch.client</groupId> <artifactId>transport</artifactId> <version>5.6.3</version> </dependency>
1.连接集群:
//设置集群的属性 Settings settings = Settings.builder() .put("cluster.name","hr_es").build(); //创建集群客户端 TransportClient client = new PreBuiltTransportClient(settings); //连接集群的各个节点 client.addTransportAddress(new InetSocketTransportAddress(new InetSocketAddress("192.168.80.11",9300))); client.addTransportAddress(new InetSocketTransportAddress(new InetSocketAddress("192.168.80.12",9300))); client.addTransportAddress(new InetSocketTransportAddress(new InetSocketAddress("192.168.80.13",9300))); //测试是否连接成功 List<DiscoveryNode> discoveryNodes = client.listedNodes(); for (DiscoveryNode discoveryNode : discoveryNodes) { System.out.println(discoveryNode.getAddress()); } }
2.创建索引库
//设置索引库属性 Settings settings = Settings.builder() .put("number_of_shards",5)//指定分片数 .put("number_of_replicas",1)//指定副本数 .build(); //创建索引库 CreateIndexResponse response = client.admin().indices().prepareCreate("myesindex") .setSettings(settings).get(); //测验是否成功 System.out.println(response.isAcknowledged());
3.修改测试库副本数
//设置属性 Settings settings = Settings.builder() .put("number_of_replicas",2)//指定副本数 .build(); //执行更改 UpdateSettingsResponse response = client.admin().indices().prepareUpdateSettings("myesindex") .setSettings(settings).get(); //测试是否成功 System.out.println(response.isAcknowledged());
4.获取集群和索引库信息
//获得集群客户端 ClusterAdminClient cluster = client.admin().cluster(); ClusterHealthResponse healths =cluster.prepareHealth().get(); //获取集群名字 String clusterName = healths.getClusterName(); //获取节点数量 int numberOfNodes = healths.getNumberOfNodes(); // 获取数据节点数量 int numberOfDataNodes = healths.getNumberOfDataNodes(); //获取所有的索引库 Collection<ClusterIndexHealth> values = healths.getIndices().values(); for (ClusterIndexHealth value : values) { String index = value.getIndex(); //分片数 int numberOfReplicas = value.getNumberOfReplicas(); //副本数 int numberOfShards = value.getNumberOfShards(); //索引库状态 ClusterHealthStatus status = value.getStatus(); }
增删改查
1.index
/** * 添加索引 */ private String index = "myesindex";//全局变量 索引库名称 private String type = "emp";//全局变量 类型名称 @Test public void index() throws Exception{ //以下三种 取一即可 作为serSource()参数 //1.以XcontentBuilder形式 XContentBuilder builder = XContentFactory.jsonBuilder().startObject() .field("name", "何睿") .field("age", 24) .field("sex", "男") .endObject(); //2.Map形式 Map map = new HashMap<String,Object>(); map.put("name","何睿");map.put("age",24);map.put("sex","男"); //3.Json形式 setSource需要参数XContentType.JSON // 4.javabean 形式 -->转换成json IndexResponse response = client.prepareIndex(index, type, "1") .setSource(builder).get(); //测试是否成功 System.out.println(response.getId()); }
2.get
GetResponse response = client.prepareGet(index, type, "1").get(); System.out.println(response.getSourceAsString());
mget
MultiGetResponse responses = client.prepareMultiGet().add(index, type, "1", "2", "3").get(); for (MultiGetItemResponse respons : responses) { GetResponse response = respons.getResponse(); System.out.println(respons); }
delete
DeleteResponse response = client.prepareDelete(index, type, "1").get(); System.out.println(response.getId());
deletebyquery
//termQuery 不会分词 matchQuery会分词 BulkByScrollResponse response = DeleteByQueryAction.INSTANCE.newRequestBuilder(client) .source(index).filter(QueryBuilders.matchQuery("sex", "女人")) .get(); System.out.println(response.getDeleted());
update1
XContentBuilder builder = XContentFactory.jsonBuilder().startObject() .field("name", "何睿").field("age", 24) .field("sex", "男人").endObject(); UpdateResponse response = client.prepareUpdate(index, type, "2") .setDoc(builder).get(); System.out.println(response.getId());
update2
XContentBuilder builder = XContentFactory.jsonBuilder().startObject() .field("name", "何睿").field("age", 24) .field("sex", "男人啊").endObject(); UpdateRequest updateRequest = new UpdateRequest(index,type,"2"); updateRequest.doc(builder); UpdateResponse response = client.update(updateRequest).get(); System.out.println(response.getId());
upsert
XContentBuilder xContentBuilder1 = XContentFactory.jsonBuilder() .startObject().field("name","帅帅啊").endObject(); XContentBuilder xContentBuilder2 = XContentFactory.jsonBuilder() .startObject().field("name","帅不帅").endObject(); UpdateResponse response = client.prepareUpdate(index, type, "1").setDoc(xContentBuilder1) .setUpsert(xContentBuilder2).get(); System.out.println(response.getId());
阅读全文
0 0
- Elasticsearch学习(二)
- Elasticsearch(二)-数据
- ELK(二)ElasticSearch
- ElasticSearch(二)
- ElasticSearch 菜鸟笔记(二)ElasticSearch 安装
- Elasticsearch学习笔记(二)Elasticsearch入门
- ElasticSearch(二):集群管理工具elasticsearch-head
- [ElasticSearch] 空间搜索 (二)
- ElasticSearch(二)--分布式集群
- ElasticSearch(二)-分布式集群
- elasticsearch学习笔记(二)
- ElasticSearch基本概念介绍(二)
- (二)ElasticSearch 分布式安装
- ElasticSearch教程(二)——ElasticSearch基本插件head
- elasticsearch 二、elasticsearch-head安装
- ElasticSearch及其插件的安装(二)
- Elasticsearch 5.x (二) 集群模式
- ElasticSearch对地理数据查询(二)
- Java实现的断点续传功能
- c++如何写头文件.h
- 习题5.6
- SPI方式读取外部FLASH抓取时序图
- 设计模式六大原则(1):单一职责原则
- ElasticSearch(二)
- 个人博客内容索引贴
- Java进阶(四)线程间通信剖析
- Eclipse配置Tomcat服务器
- Mysql忘记密码解决方案
- centos 6.5 安装git
- linux 中shell变量的含义
- iOS 多线程之 GCD 的介绍
- html的meta总结