【问题标题】:Unique Tag Query in Elastic SearchElastic Search 中的唯一标签查询
【发布时间】:2012-10-04 04:12:58
【问题描述】:

我有 POSTS,可以有许多 TAGS。我只希望我的查询返回带有唯一标签的 POSTS 而没有其他标签。例如。

posts: [
  {  id: 1
     tags: [hello, world]
     ...
  }
  {  id: 2
     tags: [hello]
  }
]

以下内容:

搜索?q=tag:hello

应该只返回:

posts: [
  {  id: 2
     tags: [hello]
  }
]

我将如何使用 弹性搜索 完成此任务?

【问题讨论】:

    标签: lucene elasticsearch


    【解决方案1】:

    Elasticsearch 在底层使用了 lucene,这是一个倒排索引。粗略地说,它索引术语并允许您根据术语查询文档。如果您搜索一个术语,它当然会返回包含该术语的文档。标签也是术语,所以逻辑是一样的。我不知道您如何告诉 lucene 返回包含该术语的文档,或者相反,排除包含任何其他术语的所有文档。

    您可以在单个值中完全发送标签,并将该字段的映射设置为"index" : "not_analyzed"。这样,您将为每个文档索引一个标签术语,其中包含与其相关的所有标签。如果您搜索特定标签,则将返回仅包含该特定标签的文档。另一方面,如果一个文档有多个标签,您需要一起搜索所有标签才能取回该文档。您的要求对我来说看起来很奇怪,但如果这是您想要的,那么您应该可以做到。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-08-15
      • 2016-02-19
      • 1970-01-01
      • 1970-01-01
      • 2021-01-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多