Enterprise:創建 meta 引擎來擴展你的 App search 體驗

在之前的文章 “Elastic App Search 入門”,我詳細地介紹了 Elastic Enterprise Search 裏的 App Search。如果你對 Elastic App Search 還不太瞭解的話,那麼請先閱讀那篇文章。在這裏我假設你已經熟悉了那裏的介紹的內容。

在今天的文章中,我將介紹如何使用 App Search 所提供的 meta engine 來進一步擴展我們的搜索體驗。

 

什麼是 meta engine ?

Elastic 從 7.6 發佈引入了適用於 Elastic Cloud 及自我管理版本上的 Elastic App Search的 元引擎 (meta engine),並很高興看到對新功能的響應。 如果你錯過了7.6公告,請查看我們對整個企業搜索解決方案所做的增強

元引擎提供了跨多個現有或新引擎進行搜索的能力。 考慮在頁面上添加一個新的搜索框,然後關閉該頁面並在你選擇的子引擎中搜索文檔。 這使大型公司(或實際上任何規模的公司)可以統一併擴展其搜索功能,同時仍然允許搜索/網站管理員完全控制每個子引擎的行爲。

創建 Elatic App Search 元引擎

 

用例:

對於公司 Acme Inc. 來說,它有許多的部門,而且每個部門都有自己的網站,比如 Blog, Support, Docs,Products 及 Commerce。每個都有自己的  App Search Engine。 我們可以在這些引擎之上創建一個 meta engine 來讓我們更方便地 Tunning, Boosting 及 Analytics 整個的搜索體驗:

在使用 meta engine 時,我們必須注意的是:

  • Schema: 不同 engine 的 schema 匹配是非常重要的。比如一個 engine 含有 title 字段,那麼它希望其它的 engine 含有同樣的字段,並它們的數據類型是一樣的
  • Autonomy:任何在 source engine 的變化都將反應到 meta engine。這些變化包括字段的變化,字段類型的變化等
  • Read-only files:如果想要做任何的編輯,只能在 source engine 中去做,不可以在 meta engine 中去修改。meta engine 不擁有任何的文檔
  • Permissions:只有具有管理權限,或具有所有權訪問權纔可以創建 meta engine
  • Read rights: meta engine 用戶將擁有對 source engine 的讀權限

安裝

在 Elastic 7.7 中,App search 的安裝稍有不同。在今天的文章中,我來介紹一下該如何安裝。在這裏,我將以 Elastic 7.7 的發行版來進行描述。

Elasticsearch

我們可參考我之前的文章“如何在Linux,MacOS及Windows上進行安裝Elasticsearch”來安裝我們的Elasticsearch。在最新版本的發佈中,我們需要啓動安全機制纔可以。爲此,我們需要修個 config/elasticsearch.yml 文件。我們添加如下的配置:

xpack.security.enabled: true

在這裏,我們啓動 Elasticsearch 的安全。我們啓動 Elasticsearch。並在另外一個 console 中打入如下的命令:

./bin/elasticsearch-setup-passwords auto

通過上面的命令,它將爲我們生成所需要的密碼信息:

Changed password for user apm_system
PASSWORD apm_system = 8E1m7pJwJQ9uHCSfONXk

Changed password for user kibana
PASSWORD kibana = RVDFQDWSHNbPsjZ3qczu

Changed password for user logstash_system
PASSWORD logstash_system = Jrl6FdjF1uzziGNeufng

Changed password for user beats_system
PASSWORD beats_system = EfG4NDFmiASlIxLR00Sa

Changed password for user remote_monitoring_user
PASSWORD remote_monitoring_user = f4HTlKs5rrVvQwTITJin

Changed password for user elastic
PASSWORD elastic = 2P4WzhKTlB5IcL6qIukV

我們記下上面命令所生產的密碼供以後進行使用。

我們可以更進一步參閱文章 “Elasticsearch:設置Elastic賬戶安全” 以瞭解更多。

Kibana

我們可以參考我之前的文章“如何在Linux,MacOS及Windows上安裝Elastic棧中的Kibana”來進行我們的安裝。由於我們剛纔已經在 Elasticsearch 中啓動了安全機制,所以,我們必須修改 config/kibana.yml 文件:

elasticsearch.username: "kibana"
elasticsearch.password: "RVDFQDWSHNbPsjZ3qczu"

請注意,在上面的 password。它來自於我們在上面 Elasticsearch 中所生產的密碼。我們啓動 Kibana。如果我們配置成功的話,那麼,我們將看到:

我們把之前的 elastic 用戶的密碼輸入進去,這樣我們就可以進入到 Kibana 的界面了:

爲了能夠實現 meta engine 的功能,我們必須使用Start a 30-day trial授權:

Enterprise App Search

我們接下來安裝 App Search。我們可以地址 https://www.elastic.co/downloads/enterprise-search 來下載 App Search。在上面有詳細的安裝指令。根據不同的平臺下載相應的安裝文件。我們通過解壓把 App Search 的安裝文件放入到一個目錄中。針對 Mac OS:

tar xzf enterprise-search-7.7.0.tar.gz
cd enterprise-search-7.7.0

我們必須修改 config/enterprise-search.yml 配置文件。按照 https://www.elastic.co/downloads/enterprise-search 上的要求,我們作如下的配置:

ent_search.auth.source: standard
elasticsearch.username: elastic
elasticsearch.password: 2P4WzhKTlB5IcL6qIukV
allow_es_settings_modification: true
secret_management.encryption_keys: [4a2cd3f81d39bf28738c10db0ca782095ffac07279561809eecc722e0c20eb09]

請注意上面的 password。它來自於上面 Elasticsearch 中的密碼生成部分。接着我們按照如下的方式來運行:

./bin/enterprise-search

在我們第一次運行時,我們可以看到如下的畫面:

它告訴我們用戶名及密碼。這個是用來登錄 App Search 用的。再接着,我們可以看到如下的畫面:

在這裏,我們可以看到 App Search 已經被成功地啓動起來了。我們還看到它提示我們添加 secret_session_key 到 config/enterprise-search.yml 文件中。這樣可以保持在重啓 App Search 時的會話。我們修改 config/enterprise-search.yml,並重新啓動 App Search。

在瀏覽器的地址欄中輸入 http://localhost:3002 :

點擊上面的 Continue to Login:

輸入上面保存的用戶名及密碼,並點擊 Log In:

這樣我們就進入到 App Search 中了。

導入數據

在今天的測試中,我們將使用如下的數據:

git clone https://github.com/liu-xiao-guo/elastic-meta-engine-datasets

在上面的 repository 裏有兩個 json 文件:eastern-national-parks.json 及 western-national-parks.json。其中的一個文檔的內容如下:

    "description": "Covering most of Mount Desert Island and other coastal islands, Acadia features the tallest mountain on the Atlantic coast of the United States, granite peaks, ocean shoreline, woodlands, and lakes. There are freshwater, estuary, forest, and intertidal habitats.",
    "nps_link": "https://www.nps.gov/acad/index.htm",
    "states": ["Maine"],
    "title": "Acadia",
    "id": "park_acadia",
    "visitors": 3303393,
    "world_heritage_site": false,
    "location": "44.35,-68.21",
    "acres": 49057.36,
    "square_km": 198.5,
    "date_established": "1919-02-26T06:00:00Z"

這兩個文檔顯示的是美國東部及西部的國家公園的一些信息。從數據的結果上, 這兩個 JSON 文件的字段是一樣的。

我點擊上面的 Launch App Search 按鈕:

我們首先創建 east-parks engine。輸入 east-parks,並點擊 Continue:

我們 點擊  Upload a JSON file:

我們選擇 east-national-parks.json 文件,並點擊 Continue:

點擊 Close 按鈕:

這樣我們就創建了我們第一個 east-parks engine,也就是我們之前所說的 source engine。

接下來我們使用同樣的方法來創建一個叫做 west-parks 的 engine:

 

這樣我們就創建兩個 source engine:west-parks 及 east-parks。
在默認的情況下,所有被導入的數據的類型都是 text。我們可以點擊上面的 manage,並對這兩個 engine 進行相應的修改:

針對上面的數據類型,我做了如下的調整:

等我們調整完後,我們需要點擊 Update Types 來完成更改。我們可以多兩個 engine 都做同樣的事情。

針對這兩個 engine 的搜索,你可以參考我之前的文章 “Elastic App Search 入門”。在今天的文章中,我將着重來講述如果創建 meta engine 來對這兩個 engine 進行搜索。

 

創建 meta engine

打開 App Search:

點擊 Meta Engines:

我們把 west-parks 及 east-parks 都選上,並點擊  Create Meta Engine:

從上面,我們可以看出來,有總共11個文檔,剛好是 east-parks (4) 及 west-parks (7) 兩個引擎文檔的總和。那麼現在我們可以針對這個 meta engine 來做像我們在之前的文章 “Elastic App Search 入門”中介紹的那樣來進行搜索。只不過,這次,我們是在 meta engine 裏對兩個 engine 同時進行搜索。我們搜索 florida

我們搜索 utah:

我們首先來搜索一下 birds 這個關鍵詞:

上面顯示沒有任何的文檔含有 birds。

我們來創建一個同義詞:

 

點擊 Create a Synonym Set:

在上面,我們把 birds, falcon, eagle 及 bats 都設置爲同義詞。這樣當我們搜索 birds 的時候,所有含有 birds, falcon, eagle 及 bats 中的任何一個詞的文檔都將被搜索到。點擊 Save:

點擊 Create  a Synomym Set 按鈕。這樣就創建了一個同義詞組。下面我們來接着試一下剛纔的同義詞:

我們可以看到在上面同時顯示的有 west-parks 及 east-parks 的文檔。

關於其它的 App Search 的功能請參照之前的文章 “Elastic App Search 入門”。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章