一般数据库只支援一般的检索,也就是根据column值的顺序
如果是字串的话,就是根据第一个字的顺序,一样的话就再看第二个,以此类推。
而ES是用全文检索,里面的 index 是 inverted index
如果拿书本当比喻. 目录就是index, 书最后的面的索引就是inverted index
通常会把文章的内容做断词,再根据词去做 inverted index
ES支援cluster,可以把文件根据 key 去决定分到哪一个机器
查询的时候就可以分散在各台机器做查询,最后再把结果汇整
我想一般商业网站用ES就够了
除非要做到像是 google/ bing/ 百度这种层级才需要做更复杂的全文检索
※ 引述《liisi (小心一点)》之铭言:
: 想请问一下 假于架设另一台server跑同步
: 比如说 商品资料 有百万笔
: 即使我在另一台db作serach
: 但是资料量一样的话 透过模糊搜寻的时间 不也会一样吗?
: 另外 我去试了一下 虾皮或是奇摩拍卖的网站
: 他们的商品 都是破亿的!!
: 我透过奇摩 输入2组关键字作搜寻
: 结果不到一秒 就跑出结果来 (好快...)
: 如果不是主机强大的话
: 也是透过ES做到的吗?
: ※ 引述《DarkKiller (System hacked)》之铭言:
: : 居然是十年前的文章... (想说居然是 Xapian...)
: : 如果你的资料量还会再增加的话,现在主流的方式是用 Elasticsearch (ES) 架
: : 设,你可以翻翻这本中文书:(虽然是讲怎么分析的,但 ES 本身就有全文搜寻的
: : 能力)
: : https://www.kingstone.com.tw/book/book_page.asp?kmcode=2013120359772
: : 如果没办法另外架设服务的话,另外架一台 MySQL server 跑 replication 同步
: : ,这台 server 独立给 search 用也是一个方法... (国内某大站台以前是这样的
: : 架构)