Запрос ElasticSearch для поиска значений, превышающих определенную длину в поле массива - PullRequest
0 голосов
/ 17 февраля 2020

ElasticSearch 6.4.2.

У нас есть документы с полем с именем customCategories, которое является полем массива многих 5-символьных кодов.

Сегодня мы случайно обнаружили, что несколько документов непреднамеренно иметь это поле без запятых, и все 5-символьные коды были объединены в одну длинную строку.

Поэтому мне нужно найти все документы, имеющие эту проблему. Итак, как мне выполнить запрос для возврата любых документов, в которых customCategories содержит любое значение, которое длиннее 5 символов?

1 Ответ

1 голос
/ 18 февраля 2020

Вы можете попробовать:

{
  "query": {
    "script": {
      "script": {
        "inline": "for(int i=0; i < doc['customCategories'].length; i++) {  if ( doc['customCategories'][i].length() > 5 ) { return true; }  }  return false;",
        "lang": "painless"
      }
    }
  }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...