ElasticSearch Java REST高度クライアントクエリーテンプレートSearchTemplate
6980 ワード
ElasticSearch Java REST高度クライアントインラインテンプレートSearchTemplate
ElasticSearch 7.2.0
1.インラインテンプレート
2.登録テンプレートの作成
3.登録テンプレートの実行
4.マルチテンプレート
5.クライアントの作成
6.maven構成---pomファイル
人工知能に興味があるポイントは次のリンクです.
現在、人工知能は非常に人気があり、多くの友达が学びたいと思っていますが、一般的なチュートリアルは博碩生のために準備されていて、理解しにくいです.最近、白さんの入門にぴったりのチュートリアルを見つけました.分かりやすいだけでなく、ユーモアもあります.だからみんなに分かち合うことができませんでした.ここをクリックするとチュートリアルにジャンプできます.
https://www.cbedai.net/u014646662
1.インラインテンプレート
テンプレートを登録するクライアントが低級クライアントを使う場合、高級クライアントは登録テンプレートを提供していない登録テンプレートは直接コマンドを実行することを提案して、javaの中で実行しないで、javaの中で登録テンプレートをして、変更する時再発行する必要があります
高度なクライアントの作成
低レベルクライアントの作成
クライアントを閉じる
Elasticsearch Java REST高度クライアントmaven構成
https://blog.csdn.net/u014646662/article/details/97895028
ElasticSearch 7.2.0
1.インラインテンプレート
2.登録テンプレートの作成
3.登録テンプレートの実行
4.マルチテンプレート
5.クライアントの作成
6.maven構成---pomファイル
人工知能に興味があるポイントは次のリンクです.
現在、人工知能は非常に人気があり、多くの友达が学びたいと思っていますが、一般的なチュートリアルは博碩生のために準備されていて、理解しにくいです.最近、白さんの入門にぴったりのチュートリアルを見つけました.分かりやすいだけでなく、ユーモアもあります.だからみんなに分かち合うことができませんでした.ここをクリックするとチュートリアルにジャンプできます.
https://www.cbedai.net/u014646662
1.インラインテンプレート
/**
*
*/
public static void inlineTemplate() {
//
var client = getClient();
SearchTemplateRequest request = new SearchTemplateRequest();
//
request.setRequest(new SearchRequest("movies"));
//
request.setScriptType(ScriptType.INLINE);
//
request.setScript("{" + " \"query\": { \"match\" : { \"{{field}}\" : \"{{value}}\" } },"
+ " \"size\" : \"{{size}}\"" + "}");
Map scriptParams = new HashMap<>();
scriptParams.put("field", "title");
scriptParams.put("value", "life");
scriptParams.put("size", 5);
request.setScriptParams(scriptParams);
try {
SearchTemplateResponse response = client.searchTemplate(request, RequestOptions.DEFAULT);
//
response.getResponse().getHits().forEach(System.out::println);
} catch (IOException e) {
e.printStackTrace();
} finally {
//
close(client);
}
}
2.登録テンプレートの作成テンプレートを登録するクライアントが低級クライアントを使う場合、高級クライアントは登録テンプレートを提供していない登録テンプレートは直接コマンドを実行することを提案して、javaの中で実行しないで、javaの中で登録テンプレートをして、変更する時再発行する必要があります
/**
*
* ,
* , java , java ,
* @return
*/
private static int registerTemplate() {
var client = getLowClient();
Request scriptRequest = new Request("POST", "_scripts/movies_script");
String json = "{" +
" \"script\": {" +
" \"lang\": \"mustache\"," +
" \"source\": {" +
" \"query\": { \"match\" : { \"{{field}}\" : \"{{value}}\" } }," +
" \"size\" : \"{{size}}\"" +
" }" +
" }" +
"}";
scriptRequest.setJsonEntity(json);
int statusCode = -1;
try {
Response response = client.performRequest(scriptRequest);
// ,
statusCode = response.getStatusLine().getStatusCode();
} catch (IOException e) {
e.printStackTrace();
} finally {
close(client);
}
return statusCode;
}
3.登録テンプレートの実行/**
*
*/
public static void runRegisterTemplate() {
int statusCode = registerTemplate();
// API 。
// , API REST , , REST 。
if (statusCode == 200) {
SearchTemplateRequest request = new SearchTemplateRequest();
request.setRequest(new SearchRequest("movies"));
request.setScriptType(ScriptType.STORED);
request.setScript("movies_script");
Map params = new HashMap<>();
params.put("field", "title");
params.put("value", "life");
params.put("size", 5);
request.setScriptParams(params);
// , :
request.setSimulate(true);
request.setExplain(true);
request.setProfile(true);
RestHighLevelClient rHClient = getClient();
try {
SearchTemplateResponse response = rHClient.searchTemplate(request, RequestOptions.DEFAULT);
SearchTemplateRequest request2 = new SearchTemplateRequest();
request2.setRequest(new SearchRequest("movies"));
request2.setScriptType(ScriptType.INLINE);
request2.setScript(response.getSource().utf8ToString());
request2.setScriptParams(new HashMap());
response = rHClient.searchTemplate(request2, RequestOptions.DEFAULT);
SearchResponse sResponse = response.getResponse();
SearchHits hits = sResponse.getHits();
if(hits != null) {
for (SearchHit hit : hits) {
System.out.println(hit.getSourceAsString());
}
}
} catch (IOException e) {
// TODO catch
e.printStackTrace();
}finally {
try {
rHClient.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
}
4.マルチテンプレートpublic static void mulitTemplate() {
RestHighLevelClient client = getClient();
String [] searchTerms = {"life", "mom", "girl"};
MultiSearchTemplateRequest multiRequest = new MultiSearchTemplateRequest();
for (String searchTerm : searchTerms) {
SearchTemplateRequest request = new SearchTemplateRequest();
request.setRequest(new SearchRequest("movies"));
request.setScriptType(ScriptType.INLINE);
request.setScript(
"{" +
" \"query\": { \"match\" : { \"{{field}}\" : \"{{value}}\" } }," +
" \"size\" : \"{{size}}\"" +
"}");
Map scriptParams = new HashMap<>();
scriptParams.put("field", "title");
scriptParams.put("value", searchTerm);
scriptParams.put("size", 1);
request.setScriptParams(scriptParams);
multiRequest.add(request);
}
try {
MultiSearchTemplateResponse multiResponse = client.msearchTemplate(multiRequest, RequestOptions.DEFAULT);
multiResponse.forEach(item -> item.getResponse().getResponse().getHits().forEach(System.out::println));
} catch (IOException e) {
e.printStackTrace();
}
}
5.クライアントの作成高度なクライアントの作成
低レベルクライアントの作成
クライアントを閉じる
/**
*
*
*
* @param client
*/
private static void close(Closeable client) {
try {
client.close();
} catch (IOException e) {
e.printStackTrace();
}
}
/**
*
*
* @return
*/
private static RestHighLevelClient getClient() {
RestHighLevelClient client = new RestHighLevelClient(
RestClient.builder(new HttpHost("elk-node01", 9200, "http"), new HttpHost("elk-node02", 9200, "http"),
new HttpHost("elk-node03", 9200, "http")));
return client;
}
/**
*
*
* @return
*/
private static RestClient getLowClient() {
RestClient client = RestClient.builder(new HttpHost("elk-node01", 9200, "http"),
new HttpHost("elk-node02", 9200, "http"), new HttpHost("elk-node03", 9200, "http")).build();
return client;
}
6.maven構成---pomElasticsearch Java REST高度クライアントmaven構成
https://blog.csdn.net/u014646662/article/details/97895028