elasticsearch - 在Elasticsearch中查找触发 `ignore_malformed`的文档

标签 elasticsearch malformed

如果将数据插入不适合现有类型的字段,则默认情况下,Elasticsearch会引发异常。例如,如果已将字段创建为数字类型,则在该字段中插入带有字符串值的文档会导致错误。

可以通过启用ignore_malformed设置来更改此行为,这意味着出于索引目的这些字段将被静默忽略,但是保留在_source文档中-意味着无法搜索或汇总无效值,但仍包含在返回的文档中。

在我们的用例中,这是可取的行为,但是我们希望能够以某种方式找到此类文档,以便将来进行修复。

是否可以通过某种方式标记忽略了某些格式错误的字段的文档?我们完全控制文档的插入过程,因此我们可以修改所有插入标志,或尝试插入,或执行任何操作,以实现我们的目标。

最佳答案

您可以使用exists查询来查找该字段不存在的文档,请参见此示例

PUT foo
{
  "mappings": {
    "bar": {
      "properties": {
        "baz": {
          "type": "integer",
          "ignore_malformed": true
        }
      }
    }
  }
}

PUT foo/bar/1
{
  "baz": "field"
}

GET foo/bar/_search
{
  "query": {
    "bool": {
      "filter": {
        "bool": {
          "must_not": [
            {
              "exists": {
                "field": "baz"
              }
            }
          ]
        }
      }
    }
  }
}

但是,没有专用的机制,因此此搜索还会查找没有故意设置该字段的文档

关于elasticsearch - 在Elasticsearch中查找触发 `ignore_malformed`的文档,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45920844/

相关文章:

ruby-on-rails - searchkick代理设置ruby on rails

elasticsearch - 获取所有不包含 key 的文档?

android - 签名 APK 中的 Linkedin 登录错误(Android)

python - Pandas 读取格式错误的 CSV

elasticsearch - ElasticSearch数值距离

lucene - Elasticsearch 统计方面文档中缺失字段的默认值

php - 一般错误 : 1835 Malformed communication packet

java - 使用 Spring Autowiring 嵌入式弹性件

java - 在 Java 中使用 XML 模式修复 XML