【问题标题】:elastic search ignore_above setting use弹性搜索ignore_above设置使用
【发布时间】:2019-06-05 03:06:18
【问题描述】:

如果忽略弹性文档中的上述问题,任何人都可以帮助解决有关解释的疑问之一 它提到 长于 ignore_above 设置的字符串将不会被索引或存储。对于字符串数组,ignore_above 将分别应用于每个数组元素,并且长度超过 ignore_above 的字符串元素将不会被索引或存储。

这是否意味着如果我添加的数据比长度更长,那么它将不允许在 ES 中发布数据

https://www.elastic.co/guide/en/elasticsearch/reference/current/ignore-above.html#ignore-above

这是我尝试过的

我对索引testData(即我创建的索引)的映射如下

使用 PUT 映射 api 我添加了以下映射

{
"testdata": {
    "mappings": {
        "testdata": {
            "properties": {
                "email": {
                    "type": "text",
                    "fields": {
                        "keyword": {
                            "type": "keyword",
                            "ignore_above": 256
                        }
                    }
                }
            }
        }
    }
}
}

我添加了长度约为 150kb 的数据(长度约为 145149) 它允许在电子邮件字段中添加数据,我也可以使用后搜索端点搜索数据,如果它允许这样做,或者我是否理解了这个概念是错误的。

【问题讨论】:

    标签: elasticsearch


    【解决方案1】:

    您的设置 ignore_above: 256 意味着如果字符串长度大于 256 个字符,则文档被索引但该字段不会被索引。如果字符串长度小于 256 个字符,则文档连同字段将被编入索引。示例 - 文本“stackoverflow”的字符串长度为 13 个字符。希望这可以澄清。

    根据您的映射,ignore_above 设置应用于email.keyword 字段。

    【讨论】:

    • @ben556 你提到的 id 字符串长度小于 256 那么它将是正确的索引,我的意思是我将数据添加到具有 ignore_above": 256 的字段中,我添加了大约 145149 个字符大约 100kb。但我能够执行 POST 搜索并在该字段上获得结果,我想如果该字段不会被索引,那么它不应该允许被正确搜索。
    • Ignore_above 设置应用于 email.keyword 字段而不是电子邮件字段。
    • 说“字段不会被索引”有点误导。当长度大于 256 时,该字段将被索引为类型 text,当长度小于 256 时,该字段将被索引为 keyword
    【解决方案2】:

    我今天解决了我的问题,我无法通过 xx.keyword 获取 agg 术语值。我的值长度是 315。

    如果字符串长于 ignore_above 值,xx.keyword 将无法用于搜索。但是值可以保存,你可以通过其他字段搜索文档。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多