Elasticsearch минимум усугубляет возвращение null - PullRequest
0 голосов
/ 23 декабря 2018

У меня есть индекс эластичного поиска, который называется 'posts'.

http://127.0.0.1:9200/posts/doc/_count возвращает {"count":240000,"_shards":{"total":5,"successful":5,"skipped":0,"failed":0}}.

Я пытаюсь найти поле с самым низким идентификатором в типе 'doc'.Погуглив, я думаю, что инструмент, который мне нужен, - это агрегация.

В основном скопировав и вставив непосредственно из официальной документации , я пришел к этому:

POST /posts/_search?size=0
{
    "aggs" : {
        "min_id" : { "min" : { "field" : "id" } }
    }
}

Используя curl -X POST "localhost:9200/posts/_search?size=0" -H 'Content-Type: application/json' -d'{"aggs" : {"min_id" : { "min" : { "field" : "id" } }}}' для отправки запроса.В качестве результатов я получаю следующее:

{
  "took" : 0,
  "timed_out" : false,
  "_shards" : {
    "total" : 5,
    "successful" : 5,
    "skipped" : 0,
    "failed" : 0
  },
  "hits" : {
    "total" : 240000,
    "max_score" : 0.0,
    "hits" : [ ]
  },
  "aggregations" : {
    "min_id" : {
      "value" : null
    }
  }
}

Я считаю, что значение min_id не должно быть нулевым.

Когда я ищу размер = 1, я получаю следующее:

{
  "took" : 2,
  "timed_out" : false,
  "_shards" : {
    "total" : 5,
    "successful" : 5,
    "skipped" : 0,
    "failed" : 0
  },
  "hits" : {
    "total" : 240000,
    "max_score" : 1.0,
    "hits" : [
      {
        "_index" : "posts",
        "_type" : "doc",
        "_id" : "1733768",
        "_score" : 1.0,
        "_source" : {
          "doc" : {
            "id" : 1733768,
            "description" : "",
            "ext" : "png",
            "tags" : [],
            ...
          }
        }
      }
    ]
  },
  "aggregations" : {
    "min_id" : {
      "value" : null
    }
  }
}

Что я делаю не так?

1 Ответ

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

Вы почти там, вы только что допустили небольшую ошибку, поле id находится внутри структуры объекта doc, поэтому вам нужно запросить doc.id вместо просто id, как это:

POST /posts/_search?size=0
{
    "aggs" : {
        "min_id" : { "min" : { "field" : "doc.id" } }
                                           ^
                                           |
                                        add this
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...