lucene - Elasticsearch查询多种类型并按类型分组?

标签 lucene elasticsearch

假设我要搜索两种类型 [汽车] 和 [建筑物],我希望将结果分开。有没有一种方法可以按类型对结果进行分组?

我知道一种简单的方法是分别查询每种类型,但对于其他用例,实际上可能需要一起查询数十或数百种类型。是否有 native 方式或 hacky 方式(如使用排序)来实现这一点?

最佳答案

这种类型的分组行为(当前)在 elasticsearch 中不可用。这是一个长期存在的要求:
https://github.com/elasticsearch/elasticsearch/issues/256

有两种方法可以提供帮助,这两种方法都远非完美,但对于某些用例来说可能已经足够好了。

  • 客户端聚合。请求比您计划显示更多的结果,然后存储这些结果。
  • 使用多查询。这使您可以轻松地在单个批处理中传递一些查询,但如果查询数量变得很大,则会出现潜在的扩展问题。

  • 这是 Solr 具有而 elasticsearch 没有的一项功能,但我从未尝试过。几年前,我在 Autonomy IDOL 中使用了类似的功能,但性能非常糟糕。

    关于lucene - Elasticsearch查询多种类型并按类型分组?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23300552/

    相关文章:

    search - 名字的 Lucene 分析器

    python - 如何改进此功能以避免在 Elasticsearch 中索引重复文档

    sorting - Elasticsearch 通配符查询以获取排序结果

    java - 您可以使用 Hibernate/Lucene 对同一字段进行排序和搜索吗?

    java - 在 Lucene 6.5.0 中存储数值

    regex - 我可以在Elasticsearch中的停止分析器的停用词中指定regexp吗?

    amazon-web-services - Elasticsearch 批量api-意外的输入结束:对象错误的预期结束标记

    algorithm - 当段落包含Elasticsearch索引中的句子时匹配

    java - 使用 Apache Tika 解析 iWorksDocument 时出现问题

    java - Lucene - 如何访问搜索到的文档?