实际开发中,全文搜索引擎是怎样使用的?全文搜索引擎是数据库的外部索引,还是它本身也可以看作一个数据库? - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
请不要在回答技术问题时复制粘贴 AI 生成的内容
yodhcn
V2EX    程序员

实际开发中,全文搜索引擎是怎样使用的?全文搜索引擎是数据库的外部索引,还是它本身也可以看作一个数据库?

  •  1
     
  •   yodhcn
    yodhcn 2023-03-25 00:56:34 +08:00 2144 次点击
    这是一个创建于 998 天前的主题,其中的信息可能已经有所发展或是发生改变。

    我对"全文搜索引擎"的理解是,它本质上也是一个数据库。

    例如:Elasticsearch 和 MySQL ,虽然二者在

    • 存储数据的方式(关系型数据库 vs 文档型数据库)
    • 索引方式( B+树 vs 倒排索引)

    上有所不同,但它们的主要功能都是存储 & 查询数据。

    如果将 Elasticsearch 看作数据库,那么 Elasticsearch & MySQL 就是两个数据库。

    我的疑惑是,在 Elasticsearch & MySQL 这两者搭配使用时

    1. 数据是怎样存储的?
      按照是否需要模糊搜索,可以将数据库表中的字段分为两类(参与模糊搜索的字段 / 不需要模糊搜索的字段)。那么,Elasticsearch 中是只存储 "参与模糊搜索的字段" 吗?
    2. 数据是怎样查询的?
      什么场景下只查询 Elasticsearch?有没有需要同时在 Elasticsearch & MySQL 中查询的场景?

    例如,实现一个搜索商品的 "高级搜索" 功能,要求除了按照 "商品的名称" 这一字段模糊搜索外,同时还需要:

    • 按照 "商品的卖家"(卖家-商品,一对多)筛选商品
    • 按照 "商品的标签"(标签-商品,多对多)筛选商品
    • 按照 "商品的销量" 排序

    在这个例子里面,只有"商品的名称" 这一字段需要模糊搜索;"商品的卖家" & "商品的标签" 都是商品的 "关系",是按照 "关系" 查找;"商品的销量" 只用来排序

    请问各位老哥,在这种场景下,数据该怎样在 Elasticsearch & MySQL 这两者间存储 & 查询

    5 条回复    2023-03-25 17:49:59 +08:00
    jhdxr
        1
    jhdxr  
       2023-03-25 09:03:57 +08:00
    1. 如果我没有记错,ES 不推荐将自己当做首要存储( primary storage ,怎么翻比较好?。。。)。换言之,你最好保证在 ES 里的数据全丢了以后,你依然能够有别的来源重建它。
    2. 倒排索引只是针对文本的检索,ES 也可以处理别的,比如数字、地理位置、向量等。(做没做好另说)
    3. 你可以将在查询条件中会用到的数据全部导入 ES ,用它完成搜索拿到主键然后回 DB 去拿完整数据
    lower
        2
    lower  
       2023-03-25 15:33:10 +08:00
    除了处理比较复杂的检索外,我觉得用于解决 db 分库分表后还想联合查的问题,应该挺有用处……
    tisswb
        3
    tisswb  
       2023-03-25 16:45:16 +08:00
    数据首先需要写入 mysql ,然后通过管道触发进入 es 索引,各有各的强项与优势,以前做舆情项目的时候搞过。
    Saxton
        4
    Saxton  
       2023-03-25 17:47:17 +08:00
    正好我做过这个业务,可以来回答回答

    首先你要搞清楚 ES 和传统 DB 的区别,ES 一般只做检索,光没有事务这点就足以了
    第二你要知道你想拿 ES 来做什么

    我目前的做法是 ES 只做检索,只要系统上涉及到复杂检索的全部走 ES ,数据在写入时,热点数据同步写入 ES ,冷数据异步写入
    ES 数据冗余为宽表数据,监听 binlog 来实现对冗余的字段进行更新。
    Saxton
        5
    Saxton  
       2023-03-25 17:49:59 +08:00
    在 ES 中数据都是扁平的,没有关系的,ES 更喜欢扁平化的数据
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     913 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 26ms UTC 21:47 PVG 05:47 LAX 13:47 JFK 16:47
    Do have faith in what you're doing.
    ubao msn snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86