Да, вы правы, что total не охватывает часть нумерации страниц, а просто заботится о отчете о запросе ie. независимо от того, совпадает ли общее количество документов по данному запросу.
Точнее, это объясняется в официальных документах ES .
total (Object ) Метаданные о количестве возвращаемых документов. Возвращаемые параметры включают в себя:
значение: общее количество возвращенных документов. отношение: указывает, вернулось ли количество документов. Возвращаемые значения:
eq: Accurate gte: нижняя граница, включая возвращенные документы
Это означает, что общее количество возвращенных документов отсутствует, но в качестве примера для нумерации страниц задано значение 1 внутренние совпадения имеют только 1 документ. Вы можете легко проверить это понимание, создав пример примера, как показано ниже:
Создайте пример индекса только с одним текстовым полем:
URL:- http://localhost:9200/{your-index-name}/ --> PUT method
{
"mappings": {
"properties": {
"name": {
"type": "text"
}
}
},
"settings": {
"index": {
"number_of_shards": "1",
"number_of_replicas": "1"
}
}
}
Один раз Указанный выше индекс создается индексом ниже 4 документов:
URL: - http://localhost:9200/{your-index-name}/_doc/{1,2,like..} --> POST method
{
"name": "foo 1"
}
{
"name": "foo bar"
}
{
"name": "foo"
}
{
"name": "foo 2"
}
Теперь, когда вы нажимаете ниже поискового запроса без нумерации страниц:
{
"query": {
"bool": {
"must": [
{
"match": {
"name": "foo"
}
}
]
}
}
}
Это дает следующий ответ:
{
"took": 9,
"timed_out": false,
"_shards": {
"total": 1,
"successful": 1,
"skipped": 0,
"failed": 0
},
"hits": {
"total": {
"value": 4, --> Note 4 here
"relation": "eq"
},
"max_score": 0.12199639,
"hits": [
{
"_index": "59638303",
"_type": "_doc",
"_id": "1",
"_score": 0.12199639,
"_source": {
"name": "foo"
}
},
{
"_index": "59638303",
"_type": "_doc",
"_id": "3",
"_score": 0.12199639,
"_source": {
"name": "foo"
}
},
{
"_index": "59638303",
"_type": "_doc",
"_id": "2",
"_score": 0.09271725,
"_source": {
"name": "foo bar"
}
},
{
"_index": "59638303",
"_type": "_doc",
"_id": "4",
"_score": 0.09271725,
"_source": {
"name": "foo 1"
}
}
]
}
}
Но когда вы нажимаете поисковый запрос с нумерацией страниц:
{
"from": 0,
"size": 1,--> note size 1
"query": {
"bool": {
"must": [
{
"match": {
"name": "foo"
}
}
]
}
}
}
, это дает ниже ответ
{
"took": 23,
"timed_out": false,
"_shards": {
"total": 1,
"successful": 1,
"skipped": 0,
"failed": 0
},
"hits": {
"total": {
"value": 4, --> this is still 4
"relation": "eq"
},
"max_score": 0.12199639,
"hits": [
{
"_index": "59638303",
"_type": "_doc",
"_id": "1",
"_score": 0.12199639,
"_source": {
"name": "foo"
}
}
]
}
}
Сейчас В приведенном выше запросе вы можете изменить размер и проверить, что только внутренний массив попаданий получает изменение, но внешний объект попаданий, который содержит общее количество, всегда остается таким же, как 4 , это подтверждает, что ваше понимание верно.