Найти поля содержащие пустую строку и удалить

С точки зрения индекса строка состоящая из сплошных шумовых слов и пустая строка - это одно и то же. Поэтому если это поле еще как-то не проиндексировано, но в индексе информации об этом отличии просто нет. Это значит, что нам в любом случае получать source для записей с пустыми шумовыми словами и проверять ее. То есть как-то так:

DELETE test


PUT test
{
  "mappings": {
    "properties": {
      "text": {
        "type": "text",
        "analyzer": "english"
      }
    }
  }
}

PUT test/_doc/only_stop_words
{
  "text": "to be or not to be"
}

PUT test/_doc/not_empty
{
  "text": "that is the question"
}

PUT test/_doc/empty
{
  "text": ""
}

PUT test/_doc/null
{
  "text": null
}

PUT test/_doc/does_not_exist
{

}


POST test/_update_by_query
{
  "script": {
    "source": """
      if(ctx._source.text.length() > 0) {
        ctx.op = "noop"
      } else {
        ctx._source.remove('text')
      }
      
      """,
    "lang": "painless"
  },
  "query": {
    "bool": {
      "filter": {
        "exists": {
          "field": "text"
        }
      },
      "must_not": {
        "wildcard": {
          "text": "*"
        }
      }
    }
  }
}

POST test/_search