Агрегация ElasticSearch не показывает количество - PullRequest
0 голосов
/ 03 мая 2018

Мой ElasticSearch работает с разными типами документов. Один тип включает в себя поле «тег» и «источник», оба типа «строка». Другие (картографические) свойства не указаны. Теперь я хотел бы проверить, какие из этих тегов наиболее часто встречаются в моей базе данных.

Основываясь на нескольких приведенных здесь примерах переполнения стека и официальной документации ElasticSearch , я написал этот простой запрос (с использованием HTTP-клиента PhpStorm):

GET http://els.local:9200/my_index/my_doc_type/_search
Accept: */*
Content-Type: application/json
Cache-Control: no-cache

{
    "size" : 0,
    "aggs" : {
        "group_by" : {
            "terms" : {
                "field" : "tag",
                "order" : { "_count" : "desc" }
             }
        }
    }
}

Конечно, я проверял это десятками разных способов, например, вот так:

    {
        "size" : 0,
        "aggs" : {
            "tags" : {
                "terms" : {
                    "field" : "tag",
                 }
            }
        }
    }

Основываясь на документации, я должен, по крайней мере, получить приблизительный подсчет того, как часто встречаются теги (см. Данную ссылку для документации ELS), но вместо этого мой результат выглядит так (сокращенный результат для лучшей читаемости):

{
  "took": 2,
  "timed_out": false,
  "_shards": {
    "total": 5,
    "successful": 5,
    "skipped": 0,
    "failed": 0
  },
  "hits": {
    "total": 62556,
    "max_score": 1.0,
    "hits": [
      {
        "_index": "my_index",
        "_type": "my_doc_type",
        "_id": "AWMmMfYVqn7lskkxZiWO",
        "_score": 1.0,
        "_source": {
          "tag": "Some random tag",
          "source": "my source code 14124"
        }
      },
      {
        "_index": "my_index",
        "_type": "my_doc_type",
        "_id": "AWMmMfwmqn7lskkxZiWc",
        "_score": 1.0,
        "_source": {
          "tag": "Some other random tag",
          "source": "my source code 235"
        }
      },
    ]
  }
}

Что я здесь не так делаю? Версия ElasticSearch выглядит как 5.6.8. Кстати, хотя он должен быть текущим в ближайшем будущем.

1 Ответ

0 голосов
/ 07 мая 2018

Благодаря Николаю я наконец-то нашел ошибку. Я не знаю, есть ли проблема с HTTP-клиентом PhpStorm или документация ElasticSearch неверна, но когда я изменил GET на POST, я наконец-то получил сообщение об ошибке.

"Fielddata is disabled on text fields by default. Set fielddata=true on [tag] in order to load fielddata in memory by uninverting the inverted index. Note that this can however use significant memory. Alternatively use a keyword field instead."

После изменения типа поля с string на keyword в отображении я получил ожидаемый результат:)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...