我目前正在将一个SOLR应用程序迁移到Elasticsearch并且已经陷入某个特定查询。 ElasticSearch文档对于如何实现我想要的结果非常模糊。 目前我正在尝试将标记的“fq”(过滤查询)从SOLR转换为Elasticsearch。我需要能够根据我的查询和过滤器从Elasticsearch facets(现在称为聚合)返回,但还要显示搜索中其他选项的聚合
虽然这听起来很复杂,但只需添加“fq”参数并按如下方式标记过滤器即可在SOLR中实现:
q=mainquery&fq=status:public&fq={!tag=dt}doctype:pdf&facet=on&facet.field={!ex=dt}doctype
从主要的SOLR帮助文档中,这将过滤“doctype:pdf”,但也包括facet输出中其他doc类型的计数 - 再次这对我来说很好,我只是想在Elasticsearch中重新创建它。
到目前为止,我已经尝试了一个“post_filter”来完成这项工作,直到我希望应用不止一个过滤器(再次SOLR处理没有任何问题)。您可以在以下位置查看有关其工作原理以及我希望如何实现的示例:
在结果右侧的过滤器/方面中,您可以选择多个“合同类型”和/或“作业类型”和/或“位置”,并仍然显示未选择的查询/过滤器的构面计数。请注意,每小时工资,年薪和添加日期没有此功能 - 这是设计使然。
关于我应该如何构建查询的任何指示都会受到极大的反响。
答案 0 :(得分:0)
我认为您需要的是全局聚合(http://www.elasticsearch.org/guide/en/elasticsearch/reference/current/search-aggregations-bucket-global-aggregation.html)。在顶级聚合内部,您应该使用过滤器聚合(http://www.elasticsearch.org/guide/en/elasticsearch/reference/current/search-aggregations-bucket-filter-aggregation.html)作为子聚合,仅过滤“status:public”。