axwz88

请教个 Elasticsearch 的多标签筛选问题

  •  
  •   axwz88 · Dec 11, 2020 · 11140 views
    This topic created in 2158 days ago, the information mentioned may be changed or developed.
    我举个简单的栗子就知道我想问什么了。

    比如有多个学校,
    华东师范大学
    同济大学
    N 多个学校......

    每个学校有 N 个标签
    华东师范大学:学霸多,女生多,校园美,交通便利....N 多个标签...
    同济大学:学霸多,男生多,美食多,运动场大....N 多个标签...

    以上都是我自己编的,

    然后我的问题是,我可以用 ES 实现根据标签去筛选学校吗,用户可以选择一个或多个标签,然后筛选符合条件的学校,如果是用 MYSQL 上面的需求很容易就能实现,用 ES 怎么实现更好,请教一下,谢谢大家。
    14 replies  •  2020-12-16 11:51:32 +08:00
    stiekel
    stiekel
    Dec 11, 2020
    1
    也一样实现,es 可以存数组。然后使用 term 。
    trevis761923
    trevis761923
    Dec 11, 2020
    2
    设定个字段名 label 值存[ "value1", "value2"...] 然后再搜呗 会自动分词的
    undefine2020
    undefine2020
    Dec 11, 2020
    3
    啊,es 知道,请教 mysql 是怎么实现多表现搜索的?
    wakzz
    wakzz
    Dec 11, 2020
    4
    这个用 es 的 terms 很好实现, 反而是 mysql 并不好实现,而且这种应用场景下 mysql 数据量大了以后不好优化
    kiddingU
    kiddingU
    Dec 11, 2020
    5
    terms 就可以了
    JRay
    JRay
    Dec 11, 2020
    6
    terms 就可以了
    ben1024
    ben1024
    Dec 11, 2020
    7
    should 嵌套
    lithium4010
    lithium4010
    Dec 11, 2020
    8
    terms filter
    axwz88
    axwz88
    OP
    Dec 11, 2020
    9
    @stiekel
    @wakzz
    @kiddingU
    @JRay
    @lithium4010
    谢谢,用 terms 可以实现查询,然后我主要想问下储存的方式,现在知道有两个储存的方式,一种是标签字段类型是 keyword,然后按数组存储的,另一种是全部标签存储在一个字符串中,标签之间用逗号分隔。两种都可以精确查询,不知道实际开发用哪种方式比较多。
    loveyu
    loveyu
    Dec 11, 2020 via Android
    10
    MySQL 实现估计是连表吧,还不如 ES
    stiekel
    stiekel
    Dec 12, 2020
    11
    @axwz88 前者。
    JRay
    JRay
    Dec 12, 2020
    12
    @axwz88 直接数组存就可以了
    kiddingU
    kiddingU
    Dec 12, 2020
    13
    @axwz88 数组就行,我目前有一个 index 和你的需求类似,也是存储用户标签数据,直接数据就行
    lithium4010
    lithium4010
    Dec 16, 2020
    14
    keyword
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Privacy   ·   Solana   ·   1439 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 36ms · UTC 11:06 · PVG 19:06 · LAX 03:06 · JFK 06:06
    ♥ Do have faith in what you're doing.