在不使用 Fielddata 的情况下对弹性搜索中的文本字段进行排序

PSRawat

在尝试对 elasticsearch 7+ 中的文本字段进行排序时,它会引发错误,表明必须将 fielddata 显式设置为 true。但这伴随着额外内存消耗的沉重代价。作为一种解决方法,我决定使用将文本字段存储为关键字的规范化器。下面是规范化器和正在使用的 elasticquery。

//field mapping: {
                    "filterable_text": {
                        "match": "S_*",
                        "mapping": {
                            "copy_to": "_text",
                            "fields": {
                                "normalize": {
                                    "type": "keyword",
                                    "normalizer": "my_normalizer"
                                },
                                "keyword": {
                                    "type": "keyword"
                                }
                            },
                            "type": "text",
                            "fielddata": true
                        }
                    }
                }
  //normalizer: "normalizer": {
                    "my_normalizer": {
                        "type": "custom",
                        "char_filter": [],
                        "filter": ["lowercase", "asciifolding"]
                    }
                }

//query: {
  "track_total_hits":false, 
  "query": {"wildcard": {"doc.S_gName.normalize": "Ami*"}},
  "from" : 0,
  "size" : 2,
  "sort" : [{
  "doc.S_gName" : {
    "order" : "desc"
  }
}]
}

但我仍然遇到同样的错误。有什么建议吗?

b.吉拉斯

如果您的映射是正确的,并且您使用文本类型和关键字类型索引了相同的字段。然后你必须对关键字字段进行排序

如果我有这样的映射

"mappings": {
    "properties": {
        "name": {
            "type": "text",
             "fields": {
                 "keyword": {
                      "type": "keyword"
                  }
             }
         }
     }
 }

然后排序将是

"sort" : [{
    "name.keyword" : {
        "order" : "desc"
    }
}]

在你的情况下,它会

"sort" : [{
    "doc.S_gName.normalize" : {
        "order" : "desc"
    }
}]

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

默认情况下,文本字段中的ElasticSearch 5.1 Fielddata是禁用的[错误:尝试在字段上使用聚合]

ElasticSearch排序给fielddata错误

如何修复关键字字段的ElasticSearch'默认情况下禁用文本字段上的Fielddata

如何在kibana中设置fielddata = true

有没有在不使用CSS的情况下用c ++编写的GTK + 3中多行文本字段的示例?

如何在不使用java中的compare()方法的情况下进行选择排序?

如何在不使用 Material UI 库的情况下创建类似于 Material UI 文本字段的文本字段?

如何在不使用稳定排序的情况下使用Python进行迭代排序?

嵌套字段上的聚合,嵌套字段属性上的fielddata = true

如何在不使用展开的情况下使用 mongodb 中的数组元素对数据进行排序

在不使用比较器的情况下使用Array.sort()对数组进行排序

在不使用字符串方法和不使用数组的情况下对整数进行排序

是否可以在不使用静态字段的情况下对彼此的字段进行两次访问?

在不使用AJAX的情况下搜索JSON数据

在不使用内置 sort() 的情况下按字母顺序对字符串中的字母进行排序

如何在不使用内置函数的情况下对字符串数组中的重复项进行排序和删除?

有没有办法在不使用python中的sort()的情况下对基于数字的数字进行排序?

在不使用查询构建器 nodejs 的情况下进行 typeorm 搜索

如何查找YouTube频道当前是否在不使用搜索的情况下进行直播?

在不使用提取的情况下检查空字段

如何在不使用数组的情况下按升序对数字进行排序?

在不使用Array.sort的情况下对多维字符串数组进行排序

SWIFT 如何在不使用集合函数创建新字典的情况下对字典进行排序?

Linux Shell命令:查找。如何在不使用管道的情况下进行排序和执行?

在不使用Prelude的情况下对文件系统数据进行排序

如何在不使用Ordereddict的情况下按键对Python字典进行排序?

如何在不使用 OrderedDict 的情况下按字母顺序对嵌套字典进行键排序

如何在不使用搜索模型的情况下在gridview中创建搜索字段

在不使用split()的情况下无法拆分文本