2016-07-12 20 views
0

我們有一個廣告搜索網站,所有搜索都是通過實體框架直接查詢sql server數據庫來完成的。如何在我的搜索中整合Elasticsearch

當數據庫有大約1000個廣告時,它工作得很好,但現在它達到了300k,並且有很多用戶在搜索。現在的搜索速度非常慢(使用原始的sql並沒有多大幫助),我被指示考慮Elasticsearch。

我去過一些教程,我得到它是如何工作了,但我不知道的理念是:

  1. 我應該停止使用SQL Server存儲的廣告,並開始使用Elasticsearch代替?所有其他相關數據呢? Elasticsearch是SQL Server的替代品嗎?
  2. 每個廣告都有一些相關的數據存儲在不同的表中,我將如何將它加載到Elasticsearch?作爲一個單一的JSON元素?
  3. 我讀了很多由Elasticsearch處理的「數十億數據」,所以我不認爲我會在300k行中出現性能問題,對嗎?

有人能更好地解釋我這些問題嗎?

回答

1

1-您仍然可以使用它;你不想在完整的數據庫上搜索,究竟?只是在廣告。它適用於非sql格式,因此具有很強的可擴展性。它也適用於json,所以你有一個簡單的表單來訪問它。

2-索引數據時,您應該嘗試在同一個文檔(sql row)中添加完整的必要數據,這是一個單一的json,但是以有限的方式。存儲是便宜的,但計算時間不是。

要索引您的數據,您可以使用filebeat,這個程序有點類似於logstash,或者創建您自己的解決方案,例如製作一個從您的db中讀取數據的程序,然後將它傳遞給bulksearch中的elasticsearch。

3正確,300k行是一個小數量,但它也取決於您從哪裏存儲elasticsearch。

希望這會有所幫助。

+0

感謝Josué,因此Elasticsearch將成爲一個只讀數據庫,每X時間都會通過此文件捕獲或您提到的其他內容進行更新? – user3900456

+0

@ user3900456不是隻讀的。您仍然可以通過json調用執行CRUD操作。 –