订单字词汇总按热门匹配子分类进行分类

时间:2019-05-23 13:53:58

标签: elasticsearch

“订购字词”按“最佳匹配”子汇总文档来源汇总存储分区

我有一个查询

上下文: 这是一个Tour Packages索引,具有属性“ set_url”之一,多个具有相同set_url的包称为家庭包。

要求: 以任何字段的排序顺序获取seo软件包,可以说持续时间(索引为类型:整数),但是排序将基于每个家庭的最低价软件包,并且结果的大小为20。

简单形式的问题陈述:假设通过set_url字段生成的术语聚合器会生成3个存储桶A,B,C,每个存储桶都有3个程序包,即(A1,A2,A3),(B1,B2 ,B3)和(C1,C2,C3),现在我首先要从每个存储桶中计算最小价格的包裹,可以说它是A2,B3,C1,然后我要根据相关的最小价格包裹的持续时间字段对存储桶进行排序每桶,即A2,B3和C1包裹。

我正在尝试做的事情:

应用一些过滤器

在密钥set_url上应用术语顶级聚合,使系列包成为存储桶,现在,我要根据ES docs中来自热门匹配的最小价格系列包来订购这些存储桶,而顶级匹配是度量聚合。 / p>

这些是热门歌曲类型的子集合,它按升序对价格进行排序,并采用一个大小来选择最低价格家庭套餐。

当前查询:

{
   index: "seo_packages",
   type: "seo_package",
   body: {
   size: 0,
   query: {
     bool: {
       filter: {
         and: [{
                  terms: {
                    package_type: ["seo"]
                  }
               },
               {
                  terms: {
                    categories: ["tour"]
                  }
               },
               {
                 term: {
                   is_published: true
                 }
               },
             ],
        },
    }
},
aggs: {
  group_by_set_url: {
    terms: {
      field: "set_url",
      size: 10,
      order: {
        "min_price_expressions.how to access doc source property duration here" => "asc"
      }
    },
    aggs: {
      min_price_expressions: {
        top_hits: {
          sort: [{
            price_expression: {
              order: "asc"
            }
          }],
              _source: {
                includes: [: id,: duration]
              },
              size: 1
            },
          }
        }
      }
    }
  }
}

这里的order子句应该是什么,以访问热门匹配子聚合文档的属性?

谢谢。

1 个答案:

答案 0 :(得分:0)

由于您要按族包中的最小值进行排序,因此可以使用min aggregation作为// Add/display a custom field to admin booking add_action('woocommerce_admin_booking_data_after_booking_details', 'admin_booking_data_after_booking_details_callback', 10, 1 ); function admin_booking_data_after_booking_details_callback( $booking_id ) { // Get the WC_Booking instance Object (if needed) $booking = get_wc_booking( $booking_id ); woocommerce_wp_text_input(array( 'id' => '_booking_bike_details', 'label' => __('Bike Details:', 'woocommerce'), 'wrapper_class' => 'form-field-wide', ) ); } // Save a custom field value in admin booking add_action('woocommerce_booking_process_meta', 'booking_process_meta_callback', 10, 1 ); function booking_process_meta_callback( $booking_id ) { if( isset($_POST['_booking_bike_details']) && $value = $_POST['_booking_bike_details'] ) { update_post_meta( $booking_id, '_booking_bike_details', sanitize_text_field( $value ) ); } } 聚合的嵌套聚合,而不是使用top_hits聚合。然后,您可以使用最小聚合的值对group_by_set_url聚合进行排序。因此汇总如下所示:

group_by_set_url