2016-11-24 59 views
0

首先,我開始連接:使用模板來查詢ElasticSearch有R

connect(es_host = "172.19.28.5") 

,然後搜索我的模板(模板名稱的getKpiHistMetric):

Search_template_get('getKpiHistMetric') 

,其結果是:

>$lang 
[1] "mustache" 

$`_id` 
[1] "getKpiHistMetric" 

$found 
[1] TRUE 

$`_version` 
[1] 2 

$template 
[1] "{"size": 1000, 
    "query": { 
     "constant_score": { 
     "filter": { 
      "bool": { 
      "must": [ 
       {"term":{"KpiKey":"{{KpiKey}}"}}, 
       {"range":{"HistWriteTimestamp":{ 
              "from":"{{from}}", 
              "to":"{{to}}" 
              } 
         } 
       }] 
    }}}}}" 

因此,我可以到達服務器並找到模板查詢。該模板有三個參數:KpiKey,fromto。如何使用此模板查詢數據庫?什麼功能被使用?我如何傳遞參數?

謝謝。

回答

1

重複的例子

library(elastic) 
conntect() 

負載iris數據集中到ES

if (!index_exists("iris")) { 
    invisible(docs_bulk(iris, "iris")) 
} 

做一個模板

body <- '{ 
    "template": { 
    "query": { 
     "match": { 
      "Species": "{{query_string}}" 
     } 
    } 
    } 
}' 

註冊模板

Search_template_register(template = 'foobar', body = body) 

定義搜索,使用模板名稱作爲Search_template_register定義,

body2 <- '{ 
"id": "foobar", 
    "params": { 
     "query_string": "setosa" 
    } 
}' 

搜索模板,Search_template

Search_template(body = body2) 
  • 與Elaticsearch v5.0.0,R v3.3.2
+0

謝謝爲了您的答案,我會接受它。你能指點一下如何在'body'和'body2'變量中創建代碼嗎? – Eduardo

+0

正文可以是R列表或JSON,'elastic'文檔有每個例子。有關示例,請參閱Elastic文檔https://www.elastic.co/guide/en/elasticsearch/reference/5.0/search-template.html – sckott