Elastic App Search 後端連接有兩種方式,一種是透過ELK的Elastic 去取得 Elastic App
的資料,第二種是直接用Java 打API的方式,去取得 Elastic App Search 的資料
取得Elastic App Search 的 index,可以從Kibana取得所有的Elastic 列表,GET
_cat/indices?v&index=*engine*
回傳的結果
health | status | index | uuid | pri | rep | docs.count | docs.deleted | store.size | pri.store.size |
---|---|---|---|---|---|---|---|---|---|
green | open | .ent-search-engine-documents-hktv | N3UnO9mkRYS94RJnxUi23w | 2 | 1 | 100 | 0 | 1.9mb | 993.9kb |
會有多個 index,可以用docs.count 來判斷,Elastic App Search 的 index
使用之前的遠端連結範例
public static void main(String[] args ) throws IOException {
// 建立連線端 這裡的是ELK的使用者名稱密碼與Host
String username = "yourname";
String password = "yourpassword";
String host = "yourHost";
int port = 9243;
int nextPort = 9244;
String protocol = "https";
final CredentialsProvider credentialsProvider = new BasicCredentialsProvider();
credentialsProvider.setCredentials(
AuthScope.ANY,
new UsernamePasswordCredentials(username, password));
RestClientBuilder Builder = RestClient.builder(
new HttpHost(host, port, protocol),
new HttpHost(host, nextPort, protocol))
.setHttpClientConfigCallback((h) -> h.setDefaultCredentialsProvider(credentialsProvider));
try (RestHighLevelClient client = new RestHighLevelClient(Builder)) {
//搜尋的Key與一般搜尋ELK不同,可能會因版本差異而改變
QueryBuilder matchQueryBuilder = QueryBuilders.matchQuery("name_zh$string", "貓砂").fuzziness(Fuzziness.AUTO);;
SearchSourceBuilder searchBuilder = SearchSourceBuilder.searchSource().query(matchQueryBuilder).size(50);
// index 的名稱
SearchRequest request = new SearchRequest(".yourIndex").source(searchBuilder);
SearchHits hits = client.search(request, RequestOptions.DEFAULT).getHits();
// 逐筆取資料
for(SearchHit hit : hits) {
Map<String, Object> sourceAsMap = hit.getSourceAsMap();
String name_zh = (String) sourceAsMap.get("name_zh$string");
String selling_price = (String) sourceAsMap.get("selling_price$string");
System.out.println(String.format("NameZH:%s selling_price:%s ",name_zh, selling_price));
}
}catch (IOException ignored) {}
}
Elastic App Search 透過前端連接來執行搜尋的動作,本文僅示範JavaScript連接 一、支援的客戶端 JavaScript Node.js PHP Python Ruby
Apr 8, 2021Elastic cloud 透過 Spring 實做遠端連接功能 一、依賴項 <?xml version="1.0" encoding="UTF-8"?> <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> <modelVersion>4.0.0</modelVersion> <groupId>org.example</groupId>
Apr 8, 2021Elasticsearch docker 透過 Spring 實做本地連接功能 一、依賴項 <dependency> <groupId>org.elasticsearch.client</groupId> <artifactId>elasticsearch-rest-client</artifactId> <version>7.12.0</version> </dependency> 二、寫入資料
Apr 8, 2021安裝 IKAnalyzer 一、安裝步驟 如果是使用官方ELK Docker yml 安裝的話,會有三個 cluster,這裡示範在es01安裝中文分詞 進入 elasticsearch bash docker exec -it ex01 bash 在 Elasticsearch bash 中,下載並安裝 IKAnalyzer
Apr 8, 2021or
By clicking below, you agree to our terms of service.
New to HackMD? Sign up