как выбрать разных детей в эластичном поиске - PullRequest
0 голосов
/ 06 декабря 2018

получил этот запрос

    "query": {
                "bool": {
                    "filter": {
                        "has_parent": {
                            "parent_type": "profiles",
                            "query": {
                                "query_string": {
                                    "query": "age:>0 and user:aqwe"
                                }
                            }
                        }
                    }
                }
            },
            "sort": ["user", {"createdAt": "asc"}]

, в результате получил несколько элементов с одинаковым _id, я думаю, что это что-то вроде проблемы с присоединением.Как отредактировать этот запрос, чтобы выбрать отдельные элементы?

1 Ответ

0 голосов
/ 06 декабря 2018

Если вы хотите вернуть только уникальные значения, вы можете использовать агрегирование терминов.В вашем случае это будет выглядеть так (размер в этом случае - максимальное количество уникальных идентификаторов, которые вы хотите вернуть):

"query": {
    "bool": {
        "filter": {
            "has_parent": {
                "parent_type": "profiles",
                "query": {
                    "query_string": {
                        "query": "age:>0 and user:aqwe"
                    }
                }
            }
        }
    }
},
"aggs": {
    "unique": {
        "terms": {
            "field": "_id",
            "size": 100
        }
    }
}    
"sort": ["user", {"createdAt": "asc"}]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...