【问题标题】:Implement search based on tags with elastic app-search使用弹性应用搜索实现基于标签的搜索
【发布时间】:2021-08-27 09:29:41
【问题描述】:

上下文

我正在为当地社区建立一个网站,我有一个“联系人”列表,其中包括分配职责。

网站的用户应该能够搜索给定的职责,然后找到被分配到该工作领域的人。

问题

与原生弹性搜索相比,应用搜索平台仅提供一些非常基本的数据类型。我决定将职责存储为逗号分隔值列表。

“联系人”文档示例

{
    "firstname": "John",
    "lastname": "Doe",
    "responsibilities": "Fire safety, Budgeting, Weddings"
}

当我实现搜索栏时,预输入将显示整个字段

这显然不是一个好的体验。另一个问题是我无法有意义地刻面和 过滤值。

我尝试了什么

一种可能的方法是创建多个“责任”字段,如下所示:

{
    "responsibility_1": "Fire safety",
    "responsibility_2": "Budgeting",
    ...
}

但这感觉很脏,需要我实施硬限制,但仍然不能解决刻面问题。

我想到的其他方法是禁用 responsibilities 搜索字段。然后我会根据当前查询应用提升和过滤器。但是,这意味着只能搜索“责任”,而不能基于文档上的其他字段。

我怎样才能实现这种“标记”?或者当我遇到这种任务并且需要原生弹性时我运气不好?

我需要某种“数组”字段类型,但 app-search 没有实现这种类型。 我依赖于应用搜索平台,迁移到本机弹性搜索将意味着相当大的时间投入。

【问题讨论】:

    标签: elasticsearch search elastic-appsearch


    【解决方案1】:

    你需要像这样创建一个值数组:

    {
        "firstname": "John",
        "lastname": "Doe",
        "responsibilities": ["Fire safety", "Budgeting", "Weddings"]
    }
    

    documentation 中提到的 appsearch 支持数组

    3. Arrays are supported
    

    【讨论】:

      猜你喜欢
      • 2017-01-04
      • 1970-01-01
      • 2019-11-21
      • 2018-11-03
      • 1970-01-01
      • 1970-01-01
      • 2021-03-08
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多