Elasticsearch学习总结二 elasticSearch一些基本用法

一 . elasticSearch提供了一些基本的rest命令,基本如下:

  • 1 /index/_search 搜索指定索引下的数据,http://ip:9200/index/_search 查询当前索引下的数据 2
  • 1 /index/ 查看指定索引的详细信息 2
  • 1 /index/type/ 创建或操作类型 2
  • 1 /index/_mapping 创建或操作mapping 2
  • 1 /index/_settings 创建或操作设置(number_of_shards是不可更改的) 2 3 使用rest命令的时候一般都是配合着curl命令一起使用,例如 4
  • curl -x 指定http请求的方法 HEAD GET POST PUT DELETE

  • 1 -d 指定要传输的数据 2
  • 创建索引的时候可以使用如下命令

  • 1 curl -XPUT 'http://localhost:9200/index_name/' 2
  • 1 当然使用PUT/POST都可以,创建索引带有数据使用如下命令 2

    curl -XPOST http://localhost:9200/test/employee/1 -d '{ "first_name" : "John", "last_name" : "Smith", "age" : 25, "about" : "I love to go rock climbing", "interests": [ "sports", "music" ] }'

二. 虽然可以使用rest命令可以灵活操作es,但是真正平时开发肯定是用Java或者python了,下面看下JavaApi如何操作es.

首先构建客户端

1Client client = TransportClient.builder().build() 2 .addTransportAddress(new InetSocketTransportAddress(InetAddress.getByName("127.0.0.1"), 9300));

因为这些操作基本可以封装为一个工具类,所以对创建客户端做了一层封装。

1 EsSearchManager esSearchManager = EsSearchManager.getInstance(); 2 esSearchManager.buildIndex("testIndex","testType");

在EsSearchManger构建实例的时候创建了ecClient,通过单例模式保证对象的唯一。

1private EsSearchManager(){ 2 getClient(); 3} 4public static EsSearchManager getInstance(){ 5 if(null == esSearchManager ){ 6 synchronized (EsSearchManager.class){ 7 esSearchManager = new EsSearchManager(); 8 } 9 } 10 return esSearchManager; 11 } 12

getClient()封装了创建client的细节不在赘述,下面是构建索引的代码,部分配置封装到了配置文件中,放置硬编码造成的修改麻烦,下面这个方法只是构建了索引,当然可以指定mapping设置,只是封装到了另一个方法中。

1public Boolean buildIndex(String indexName) throws Exception { 2 IndicesExistsResponse response = getClient().admin().indices() 3 .prepareExists(indexName).execute().actionGet(); 4 Boolean flag = true; 5 ResourceBundle rb = ResourceBundle.getBundle("commons"); 6 String replicas = rb.getString("replicas"); 7 String shards = rb.getString("shards"); 8 String refreshInterval = rb.getString("refreshInterval"); 9 if (!response.isExists()) { //需要将配置放置到配置文件中 10 Settings settings = Settings.settingsBuilder() 11 .put("number_of_replicas", Integer.parseInt(replicas)) 12 .put("number_of_shards", Integer.parseInt(shards)) 13 .put("index.translog.flush_threshold_ops", 10000000) 14 .put("refresh_interval", refreshInterval) 15 .put("index.codec", "best_compression").build(); 16 CreateIndexResponse createIndxeResponse = getClient().admin().indices() 17 .prepareCreate(indexName).setSettings(settings).execute() 18 .actionGet(); 19 flag = createIndxeResponse.isAcknowledged(); 20 LOG.info("返回值" + flag); 21 } 22 return flag; 23 }

至此索引创建完毕,通过head插件可以迅速查看到,详细的代码已将上传至github中,地址如下 https://github.com/winstonelei/BigDataTools

点赞
收藏

评论区

加载中...

相关推荐

MySQL:[Err] 1292 - Incorrect datetime value: ‘0000-00-00 00:00:00‘ for column ‘CREATE_TIME‘ at row 1

文章目录问题用navicat导入数据时,报错:原因这是因为当前的MySQL不支持datetime为0的情况。解决修改sql\mode:sql\mode:SQLMode定义了MySQL应支持的SQL语法、数据校验等,这样可以更容易地在不同的环境中使用MySQL。全局s

Oracle 分组与拼接字符串同时使用

SELECTT.,ROWNUMIDFROM(SELECTT.EMPLID,T.NAME,T.BU,T.REALDEPART,T.FORMATDATE,SUM(T.S0)S0,MAX(UPDATETIME)CREATETIME,LISTAGG(TOCHAR(

MySQL部分从库上面因为大量的临时表tmp_table造成慢查询

背景描述Time:20190124T00:08:14.70572408:00User@Host:@Id:Schema:sentrymetaLast_errno:0Killed:0Query_time:0.315758Lock_

皕杰报表之UUID

​在我们用皕杰报表工具设计填报报表时,如何在新增行里自动增加id呢?能新增整数排序id吗?目前可以在新增行里自动增加id,但只能用uuid函数增加UUID编码,不能新增整数排序id。uuid函数说明:获取一个UUID,可以在填报表中用来创建数据ID语法:uuid()或uuid(sep)参数说明:sep布尔值,生成的uuid中是否包含分隔符'',缺省为

手写Java HashMap源码

HashMap的使用教程HashMap的使用教程HashMap的使用教程HashMap的使用教程HashMap的使用教程22

2020年前端实用代码段,为你的工作保驾护航

有空的时候,自己总结了几个代码段,在开发中也经常使用,谢谢。1、使用解构获取json数据let jsonData  id: 1,status: "OK",data: 'a', 'b';let  id, status, data: number   jsonData;console.log(id, status, number )

Elasticsearch学习总结二 elasticSearch一些基本用法 - HelloWorld