1

我正在使用 Elasticsearch 6.8.2。我正在尝试通过 user_id=1 获得所有中标拍卖。如果我通过 user_id=1 我想获得“拍卖 1”,因为 user_id=1 是最高出价者。我尝试使用 Bucket Selector Aggregation 但由于嵌套的文档类型而无法使其工作。

这是架构和示例数据:

架构:

{
  "mappings": {
    "_doc": {
      "properties": {
        "bids": {
          "type": "nested"
        }
      }
    }
  }
}

数据:

{
    "title": "Auction 1",
    "price": 50,
    "bids": [
        {"user_id": 1, "amount": 100},
        {"user_id": 2, "amount": 200},
        {"user_id": 1, "amount": 300}
    ]
},{
    "title": "Auction 2",
    "price": 200,
    "bids": [
        {"user_id": 3, "amount": 300},
        {"user_id": 1, "amount": 400},
        {"user_id": 5, "amount": 500}
    ]
}

到目前为止我得到的查询:

{
  "query": {
    "bool": {
      "must": [
        {
          "nested": {
            "path": "bids",
            "query": {
              "bool": {
                "must": [
                  {
                    "terms": {
                      "bids.user_id": [
                        1
                      ]
                    }
                  }
                ]
              }
            }
          }
        }
      ]
    }
  },
  "sort": [
    {
      "price": "desc"
    }
  ]
}

请帮助我,我很绝望。

4

0 回答 0