初試 Elastic Search

一.背景html

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

需求是 支持根據其餘表的數據和自己數據進行篩選和排序。git

若是直接使用聯表進行查詢,耗時比較長,用戶反饋使用比較慢,並且搜索條件比較複雜。github

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

 

二.方案數據庫

採用最通用的ELK方案編程

Step1: 安裝segmentfault

首先安裝java,而後安裝elk,能夠在https://www.elastic.co/start上找到安裝包。nosql

 

Step2: 運行elasticsearch

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

 

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就能解決的吧)

相關文章
相關標籤/搜索