Я использую Elasticsearch 6.8.2. Я пытаюсь получить все выигрышные аукционы по user_id = 1. Если я передам user_id = 1, я хочу получить «Аукцион 1», потому что user_id = 1 - самая высокая цена. Я пытался использовать Bucket Selector Aggregation, но не смог заставить его работать из-за вложенного типа do c.
Вот схема и пример данных:
Схема:
{
"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"
}
]
}
Пожалуйста, помогите мне, я в отчаянии.