圖床網(wǎng)站怎么做競價推廣教程
作者:來自 Elastic?Praveen Durairaju
GraphQL 提供了一種高效且靈活的數(shù)據(jù)查詢方式。本博客將解釋 Hasura DDN 如何與 Elasticsearch 配合使用,以實現(xiàn)高性能和元數(shù)據(jù)驅(qū)動的數(shù)據(jù)訪問。
此示例的代碼和設(shè)置可在此 GitHub 存儲庫 - elasticsearch-subgraph-example 中找到。
Hasura DDN 是一個為云構(gòu)建的元數(shù)據(jù)驅(qū)動的數(shù)據(jù)訪問層。它會自動生成支持事務(wù)和分析工作負(fù)載的 API。通過利用元數(shù)據(jù)(例如模型、關(guān)系、權(quán)限和安全規(guī)則),Hasura 創(chuàng)建了針對性能進(jìn)行了優(yōu)化的 API,提供低延遲響應(yīng)并輕松處理高并發(fā)需求。
元數(shù)據(jù)驅(qū)動(Metadata-driven)?API 在搜索 AI 世界中的作用
元數(shù)據(jù)驅(qū)動 API 使用聲明式方法,而不是手動編碼每個端點及其相關(guān)邏輯。數(shù)據(jù)源(如 Elasticsearch 索引)的結(jié)構(gòu)以標(biāo)準(zhǔn)化格式描述。定義不同實體之間的關(guān)系。權(quán)限和安全規(guī)則以細(xì)粒度級別指定,全部使用配置。
基于此元數(shù)據(jù),API 層會自動配置并與數(shù)據(jù)源保持同步。
對于 Elasticsearch,使用 Hasura DDN 的元數(shù)據(jù)驅(qū)動 API 可提供統(tǒng)一且一致的數(shù)據(jù)訪問。數(shù)據(jù)的變化會立即反映在 API 中,這對于實時搜索和 AI 應(yīng)用程序至關(guān)重要。
架構(gòu)
在上面的架構(gòu)中,Hasura 是連接多個子圖的超級圖,Elasticsearch 是子圖中的數(shù)據(jù)源之一。
為 Elasticsearch 設(shè)置 GraphQL API
此設(shè)置將引導(dǎo)你使用 Docker 將 Hasura DDN 連接到本地運行的 Elasticsearch 實例。但是,你可以通過使用正確的憑證更新環(huán)境變量輕松切換到 Elastic Cloud。使用 Elastic Cloud 是在生產(chǎn)環(huán)境中體驗 Elasticsearch 的推薦方式,它提供可管理、可擴(kuò)展且安全的部署。
設(shè)置:加載示例數(shù)據(jù)集
git clone https://github.com/hasura/elasticsearch-subgraph-example
將 .env.example 復(fù)制到 .env 并設(shè)置 ELASTICSEARCH_PASSWORD 的值。
使用示例索引在本地啟動 elasticsearch:
docker compose up -d
訪問 http://localhost:9200 以驗證 Elasticsearch 是否正在使用示例數(shù)據(jù)運行。
Elasticsearch 的 GraphQL 子圖
在本節(jié)中,我們將設(shè)置一個 GraphQL 子圖(subgraph),將 Hasura DDN 連接到你的 Elasticsearch 實例。子圖允許你將 Elasticsearch 公開為可查詢的 API,從而提供一種靈活而高效的方式通過 GraphQL 執(zhí)行復(fù)雜的搜索、聚合和過濾。
先決條件:
- Hasura CLI [從此處安裝]
- 使用 ddn auth login 登錄并進(jìn)行身份驗證
初始化超級圖:
ddn supergraph init .
初始化 Elasticsearch 連接器:
ddn connector init -i
在快速啟動向?qū)е?#xff0c;輸入以下環(huán)境變量值:
ELASTICSEARCH_URL=http://local.hasura.dev:9200
ELASTICSEARCH_USERNAME=elastic
ELASTICSEARCH_PASSWORD=elasticpwd
要使用 Elastic Cloud 而不是本地實例,只需修改 .env 文件中的環(huán)境變量。將 ELASTICSEARCH_URL、ELASTICSEARCH_USERNAME 和 ELASTICSEARCH_PASSWORD 值替換為 Elastic Cloud 部署中的相應(yīng)憑據(jù)。
Hasura DDN 連接到 Elasticsearch 以進(jìn)行自檢和生成 GraphQL API。
自檢 Elasticsearch 實例并跟蹤所有索引和集合:
ddn connector introspect elasticsearch --add-all-resources
本地啟動 Supergraph:
ddn run docker-start
在本地構(gòu)建 Supergraph:
ddn supergraph build local
訪問 https://console.hasura.io/local/graphql?url=http://localhost:3000 開始探索本地 supergraph。
用于搜索的 GraphQL 查詢
現(xiàn)在我們已經(jīng)設(shè)置了 Hasura DDN 并將元數(shù)據(jù)驅(qū)動的 API 應(yīng)用于 Elasticsearch,讓我們來編寫 GraphQL 查詢來執(zhí)行搜索操作。
以下查詢重點介紹了 Hasura 如何將復(fù)雜的搜索和聚合要求轉(zhuǎn)化為簡單的聲明式 GraphQL 操作。這些示例不僅展示了 GraphQL 的靈活性,還展示了 Hasura 帶來的標(biāo)準(zhǔn)化,從而實現(xiàn)了跨不同數(shù)據(jù)源的一致 API 訪問。
獲取 5 個產(chǎn)品(簡單查詢)
query searchProducts {products(limit: 5) {idpricenameproductId}
}
獲取 5 個產(chǎn)品名稱與術(shù)語 “shoes”匹配的產(chǎn)品(使用詞組匹配的搜索查詢)
query searchProducts {products(limit: 5, where: {name: {match_phrase: "shoes"}}) {idpricenameproductId}
}
獲取符合過濾條件的產(chǎn)品集合(聚合查詢)
query aggregateOfProducts {productsAggregate(filter_input: {where: {name: {match_phrase: "shoes"}}}) {name {_count}}
}
注意:此集成不僅限于搜索 API,還可以擴(kuò)展到 Elasticsearch 中的日志記錄和可觀察性數(shù)據(jù)用例。
Hasura 對可組合性和標(biāo)準(zhǔn) API 的支持使得將多個數(shù)據(jù)源(Postgres、MongoDB、REST 等)與 Elasticsearch 連接起來成為可能,從而構(gòu)建一個更大的 Supergraph 來滿足跨團(tuán)隊的需求。這種可組合性允許不同的團(tuán)隊以一致、標(biāo)準(zhǔn)化的方式訪問相同的 API 端點和數(shù)據(jù)源,從而減少技術(shù)債務(wù)。
無論你是構(gòu)建搜索體驗還是高級分析儀表板,Hasura 都能讓你的團(tuán)隊專注于應(yīng)用程序邏輯而不是 API 管理,從而提高上市速度并降低運營復(fù)雜性。
大規(guī)模性能考慮
將 Hasura 和 Elasticsearch 結(jié)合使用的主要優(yōu)勢之一是通過謂詞下推(predicate pushdown)來優(yōu)化性能。Hasura DDN 能智能地編譯并將過濾、限制和排序操作直接推送到 Elasticsearch,減少 N+1 查詢的開銷,避免數(shù)據(jù)過度抓取。
例如,以下 GraphQL 查詢:
query searchProducts {products(limit: 5, where: { name: { match_phrase: "shoes" } }) {idpricenameproductId}
}
生成類似于以下內(nèi)容的 Elasticsearch 查詢:
{"_source": ["_id","price","name","product_id"],"query": {"match_phrase": {"name": "shoes"}},"size": 5
}
通過僅請求必要的字段 (_source) 并限制獲取的文檔數(shù)量 (size),Hasura 可確保 Elasticsearch 達(dá)到最佳性能。與傳統(tǒng)的手動編碼 API 相比,這是一個顯著的改進(jìn),因為在傳統(tǒng)的 API 中,每個新需求都需要額外的手寫查詢。
總結(jié)
正如本文所探討的那樣,用于 Elasticsearch 的 Hasura DDN 連接器為加速 Elasticsearch 的 GraphQL API 和在組織中構(gòu)建更大的 Supergraph 開辟了新的可能性,并與多個團(tuán)隊合作。
Hasura 的元數(shù)據(jù)驅(qū)動方法簡化了 API 開發(fā),為通過 GraphQL 訪問 Elasticsearch 數(shù)據(jù)提供了一個快速、一致且安全的層。通過利用謂詞下推,Hasura 可確保最佳搜索性能。詳細(xì)了解 Hasura 針對 Elasticsearch 的功能。
我們很高興看到你將構(gòu)建什么!
準(zhǔn)備好自己嘗試一下了嗎?開始免費試用。
想要獲得 Elastic 認(rèn)證?了解下一期 Elasticsearch 工程師培訓(xùn)何時開始!
原文:https://www.elastic.co/search-labs/blog/builing-ai-ready-apps-with-hasura-dnn-elasticsearch