1. 程式人生 > >初試 Elastic Search

初試 Elastic Search

成了 ren hub guid 執行 最重要的 一個 數據 elastics

一.背景

項目數據庫中有一張Task表,關聯了很多其他的表(關聯方式包括一對多,以及一對一)。

需求是 支持根據其他表的數據和本身數據進行篩選和排序。

如果直接使用聯表進行查詢,耗時比較長,用戶反饋使用比較慢,而且搜索條件比較復雜。

考慮使用Elastic Search 對數據進行處理後再查詢,以提高查詢的性能。

二.方案

采用最通用的ELK方案

Step1: 安裝

首先安裝java,然後安裝elk,可以在https://www.elastic.co/start上找到安裝包。

Step2: 運行

直接去對於文件夾下執行命令即可。

Step3: 同步數據

這是最重要的一步,由於不知道如何將多對一的關系處理成嵌套Document,所以直接Stuff成了一個字符串處理。

然後修改logstash的日誌,可以參考

https://segmentfault.com/a/1190000014387486

三.查詢

elasticsearch為各個語言分別提供了客戶端代碼,.net可以使用

https://github.com/elastic/elasticsearch-net上提供的nest使用函數式編程來組合查詢。

當然在這之前需要先學習如何使用DSL來進行查詢,參考文獻

https://www.elastic.co/guide/en/elastic-stack/current/index.html

四.Tips

ElasticSearch在進行match查詢的時候默認會使用分詞,對中文的分詞支持很差,可以使用ik中文和拼音插件進行處理。

如果只需要嚴格匹配的話可以使用match_pharse

暫時先寫到這裏,等之後用到更多再補充。

(其實我覺得這個需求只要用nosql就能解決的吧)

初試 Elastic Search