Elasticsearch - делает поле агрегируемым, но не доступным для поиска - PullRequest
0 голосов
/ 19 декабря 2018

Мои данные эластичного поиска содержат большое количество полей, по которым мне не нужно искать.Но я хотел бы получить агрегации, такие как процентили, медиана, количество, средниеи т.д. на этих полях.

Есть ли способ отключить возможность поиска поля, но разрешить его агрегирование?

Ответы [ 2 ]

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

Большинство полей индексируются по умолчанию и, следовательно, делают их доступными для поиска.Если вы хотите сделать поле недоступным для поиска, все, что вам нужно сделать, это установить для его параметра index значение false и doc_values на true.Согласно эластичной документации:

Для всех полей, поддерживающих значения документа, они включены по умолчанию.

Поэтому вам не нужно явно указывать "doc_values": true для таких полей.

Например,

{
  "mappings": {
    "_doc": {
      "properties": {
        "only_agg": {
          "type": "keyword",
          "index": false
        }
      }
    }
  }
}

Если вы попытаетесь выполнить поиск по полю only_agg в вышеприведенном примере, упругая сгенерирует исключение по следующей причине:

Cannot search on field [only_agg] since it is not indexed.
0 голосов
/ 19 декабря 2018
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...