java以RestHighLevelClient方式连接elasticsearch,并且获取index,以及column字段
pom.xml依赖
下面展示一些 内联代码片
。
RestHighLevelClient相关依赖
<dependency>
<groupId>org.elasticsearch.client</groupId>
<artifactId>elasticsearch-rest-high-level-client</artifactId>
<version>5.6.3</version>
</dependency>
<dependency>
<groupId>org.apache.logging.log4j</groupId>
<artifactId>log4j-core</artifactId>
<version>2.9.1</version>
</dependency>
日志依赖
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-api</artifactId>
<version>1.7.5</version>
</dependency>
java代码EsUtils类
下面展示一些 内联代码片
。
import org.apache.http.HttpHost;
import org.apache.http.auth.AuthScope;
import org.apache.http.auth.UsernamePasswordCredentials;
import org.apache.http.client.CredentialsProvider;
import org.apache.http.impl.client.BasicCredentialsProvider;
import org.apache.http.impl.nio.client.HttpAsyncClientBuilder;
import org.elasticsearch.action.admin.indices.alias.get.GetAliasesRequest;
import org.elasticsearch.action.search.SearchRequest;
import org.elasticsearch.action.search.SearchResponse;
import org.elasticsearch.client.*;
import org.elasticsearch.cluster.metadata.AliasMetaData;
import org.elasticsearch.index.query.BoolQueryBuilder;
import org.elasticsearch.index.query.TermQueryBuilder;
import org.elasticsearch.search.SearchHit;
import org.elasticsearch.search.SearchHits;
import org.elasticsearch.search.builder.SearchSourceBuilder;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
import java.util.Set;
public class EsUtils {
private final static Logger logger = LoggerFactory.getLogger(EsUtils.class);
private static RestHighLevelClient client;
/**
* 连接ES
* @param ip
* @param port
* @param userName
* @param password
* @param connectEsHttpType
* @return
*/
public static RestClient getCline(String ip,int port,String userName,String password,String connectEsHttpType) {
String scheme = null;
if("ES_HTTP".equals(connectEsHttpType)){
scheme = "http";
}else if("ES_HTTPS".equals(connectEsHttpType)){
scheme = "https";
}
//注册3 otherhost主机名 8080端口 任意域 认证机制ntlm 用户U3 密码P3
final CredentialsProvider credentialsProvider = new BasicCredentialsProvider();
credentialsProvider.setCredentials(AuthScope.ANY,
//new UsernamePasswordCredentials("elastic", "123456")); //es账号密码(默认用户名为elasticz)
new UsernamePasswordCredentials(userName, password)); //es账号密码(默认用户名为elastic)
client = new RestHighLevelClient(
RestClient.builder( new HttpHost(ip,port,scheme) ).setHttpClientConfigCallback( new RestClientBuilder.HttpClientConfigCallback() {
public HttpAsyncClientBuilder customizeHttpClient(HttpAsyncClientBuilder httpClientBuilder) {
httpClientBuilder.disableAuthCaching();
return httpClientBuilder.setDefaultCredentialsProvider(credentialsProvider);
}
})/*.setMaxRetryTimeoutMillis(2000)*/
);
return client.getLowLevelClient();
}
/**
* 获取ES 得所有 index (这里得index相当于table)
* @return
*/
public static List<Object> getIndexList(){
List<Object> indexList = new ArrayList<Object>();
try {
GetAliasesRequest request = new GetAliasesRequest();
GetAliasesResponse getAliasesResponse = client.indices().getAlias(request,RequestOptions.DEFAULT);
Map<String, Set<AliasMetaData>> map = getAliasesResponse.getAliases();
Set<String> indices = map.keySet();
for (String key : indices) {
indexList.add(key);
}
} catch (IOException e) {
e.printStackTrace();
logger.info(e.getMessage());
}
return indexList;
}
/**
* 根据index获取具体数据
*
* @throws IOException
*/
public static List<Object> search(String searchName, int id,String index) throws IOException {
SearchRequest request = new SearchRequest(index);
SearchSourceBuilder builder = new SearchSourceBuilder();
BoolQueryBuilder boolQueryBuilder = new BoolQueryBuilder();
boolQueryBuilder
.must(new TermQueryBuilder(searchName,id));
builder.query(boolQueryBuilder);
request.source(builder);
System.out.println("搜索语句为: " + request.source().toString());
SearchResponse search = client.search(request, RequestOptions.DEFAULT);
System.out.println(search);
SearchHits hits = search.getHits();
SearchHit[] hitsArr = hits.getHits();
List<Object> strList=new ArrayList<Object>();
for (SearchHit documentFields : hitsArr) {
String str=documentFields.getSourceAsString();
System.out.println(str);
strList.add(str);
//将字符串转化成json对象
}
return strList;
}
}