初試 Elastic Search
阿新 • • 發佈:2018-07-15
成了 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