elasticsearch - 一个中的两个Elasticsearch查询

标签 elasticsearch

在索引中,我列出了电影列表,其中包含一些信息(标题,年份,等级等),以及一个 bool(boolean) 值“已观看”。
当用户单击按钮时,我必须显示2件事:

  • 按日期排序的电影列表(带有分页)
  • 最新的“已观看”电影

  • 到目前为止,我有一个具有match_all的查询,并按“desc”排序以获取电影的完整列表,还有一个具有术语过滤器和排序desc的查询,以获取最新的“已观看”电影。
    有没有一种方法可以将这两个查询合而为一,这样,对于结果的每一页,我都可以按所述日期的日期对电影以及最近观看的电影进行排序?

    最佳答案

    经过一番搜索,我实际上找到了解决方案...
    我正在使用常规查询来获取所有电影,并使用嵌套聚合来获取最新观看的电影。
    最终查询如下所示:

    GET movies/_search
    {
      "aggs": {
        "watched_movies": {
          "filter": {
            "term": {
              "watched": true
            }
          },
          "aggs": {
            "latest": {
              "top_hits": {
                "size": 1,
                "sort": [{
                  "lastWatchAt": {
                    "order": "desc"
                  }
                }]
              }
            }
          }
        }
      }, 
      "query": {
        "function_score": {
          "boost_mode": "sum",
          "score_mode": "multiply", 
          "query": {
            "match_all": {}
          },
          "functions": [
            {
              "gauss": {
                "releasedYear": {
                  "offset": "90d", 
                  "origin": "now",
                  "scale": "365d"
                }
              }
            }
          ]
        }
      },
      "sort": [
        {
          "releasedYear": {
            "order": "desc"
          }
        }
      ]
    }
    

    关于elasticsearch - 一个中的两个Elasticsearch查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58732721/

    相关文章:

    elasticsearch - ElasticSearch完成提示标准分析器不起作用

    elasticsearch - 从script_field访问matched_queries

    scala - Elastic4s 5.x中的多字段

    elasticsearch - Elasticsearch/Kibana 中两个聚合列的计算列?

    elasticsearch - 如何计算 “value”大于0的存储桶总数?

    elasticsearch - Elasticsearch-在聚合查询期间覆盖映射定义

    elasticsearch - 应该+ ElasticSearch中的distance_function

    django - 弹性apm,django集成,用户ID

    elasticsearch - Elasticsearch 会流式传输结果吗?

    elasticsearch - 在Ubuntu服务器上部署Elasticsearch