發現 elastic 公司有提供一些範例資料提供學習使用;例如下面這個連結就是莎士比亞的作品。
https://download.elastic.co/demos/kibana/gettingstarted/shakespeare_6.0.json
而 R 的 elastic 也很貼心的將 API 的使用簡化,只要把 json 的擋案路徑設定好就可以完成上傳。
library(elastic)
# Connect OK!
x <- connect(
host = "111.asia-east1.gcp.elastic-cloud.com",
path = "",
user = "elastic",
pwd = "111",
port = 9243,
transport_schema = "https"
)
# upload json file
# From a file already in newline delimited JSON format
shakespeare <- "/mnt/c/Users/excel/Downloads/shakespeare_6.0.json"
docs_bulk(x, shakespeare , index = "shakespeare" )
當然官網中也提供了 curl 的上傳手法,不過還得指定 'Content-Type: application/x-ndjson' ,我個人認為還是稍微麻煩了點。
而說到莎士比亞的作品,最為出名的台詞大概就是那句"To be or not to be",這句話到底是講的呢。
我們就透過 ElasticSearch 來找看看,並且同時看看,類似的句法結構的台詞出現的多不多。
在 API Console 中透過 GET
shakespeare/_search?q=text_entry:to be or not to be
由此我們可以知道是由 HAMLET (哈姆雷特說出),而這種類似 not to be 的被動表達型式,大約出現了 127次。試想類似的文字尋找,在一般的關聯式資料庫,可能就沒有這麼方便囉
接下來讓我們 "Create index pattern" : shakespeare。
然後今天來試試看 Kibana 的 Discover,發現此處有提供一套名為 KQL(Kibana Query Language)的查詢語法.
KQL 還有提供進階的查詢語法(AND/OR/巢狀查詢),例如我可以查詢 HAMLET 使用 "to be" 句型的台語:
text_entry: "to be" and speaker: HAMLET
相較於之前在 Elastic API Console 查詢得出的前10筆 JSON 樣本資料顯示,KQL 查詢後的就直接先回傳500筆資料提供檢視,而且輸出顯示的畫面更加直覺
近期我所使用的範例都缺乏了日期時間欄位資訊,接下來的日子中,我再介紹此類時間列系的範例。