閱讀442 返回首頁    go 微軟 go windows


《深入理解Elasticsearch(原書第2版)》一2.3.2 Mustache模板引擎

本節書摘來華章計算機《深入理解Elasticsearch(原書第2版)》一書中的第2章 ,第2.3.2節,[美]拉斐爾·酷奇(Rafal Ku) 馬雷克·羅戈任斯基(Marek Rogoziski)著 張世武 餘洪淼 商旦 譯 更多章節內容可以訪問雲棲社區“華章計算機”公眾號查看。

2.3.2 Mustache模板引擎

Elasticsearch使用Mustache模板引擎來為查詢模板生成可用的查詢語句。如你所見,每個變量被雙大括號包裹,這一點是Mustache規範要求的,是該模板引擎間接引用變量的方式。Mustache模板引擎的完整語法不在本書討論範圍內,不過我們可以在這裏簡單介紹一下它最具魅力的部分,包括條件表達式、循環和默認值。

1. 條件表達式
{{val}}表達式用來插入變量val的值。{{#val}}和{{/val}}則用來在變量val取值計算為true時把位於它們之間的變量標記替換為變量值。
我們看一下下麵這個示例:
image

這個命令將返回library索引中的所有文檔。不過,假如我們把limit參數的取值改為true,則再次查詢後,我們將隻能得到兩個文檔。這是因為判斷條件滿足了,模板內容因此被激活。
 不幸的是,似乎直到本書寫作時,筆者所使用的Elasticsearch版本在處理條件表達式時仍然有些問題。比如,其中一個相關問題可以在這裏看到:https://github.com/Elasticsearch/Elasticsearch/issues/8308 。我們決定保留條件表達式這一小節,以期望相關問題都能在未來得到解決。使用條件表達式可以更方便地構造查詢模板。
2. 循環
循環結構定義和條件表達式一模一樣,都位於{{#val}}和{{/val}}之間。如果表達式中變量取值是數組,則可以使用{{.}}標記來指代當前變量值。
例如,假定我們需要模板引擎遍曆一個詞項數組來生成一個詞項查詢,可以執行如下命令:
image

3. 默認值
默認值標記允許我們在參數未定義時給它設置默認取值。比如,給var變量設置默認值語法的代碼如下:
image

舉個例子,假定我們要給查詢模板中的phrase參數設置默認值“crime”,可以使用如下命令:
image

這個命令將從Elasticsearch查詢出所有title字段中包含front的文檔。而如果我們在params片段中不指定phrase參數的值,則使用crime來代替。

最後更新:2017-06-23 23:02:53

  上一篇:go  《深入理解Elasticsearch(原書第2版)》一2.3.3 把查詢模板保存到文件
  下一篇:go  想讓網站關鍵詞優化快速排名,可以這樣做