如何通过查询网址
在ES 5.4版本中订购特定字段http://localhost:9200/companies/emp/_search?q=*&sort=name:desc
这里我正在搜索emp并按降序显示emp名称。 我得到了例外
Fielddata is disabled on text fields by default. Set fielddata=true on [name] in order to load fielddata in memory by uninverting the inverted index. Note that this can however use significant memory. Alternatively use a keyword field instead."
任何帮助?
答案 0 :(得分:0)
这是因为您尝试使用“text”类型的字段对数据进行排序。如错误所示,您应该将类型从“text”更改为“keyword”或启用fielddata,但我建议您阅读此infohttps://www.elastic.co/guide/en/elasticsearch/reference/current/ fielddata.html在启用之前。
答案 1 :(得分:0)
以下是对fielddata的一个非常好的解释,以及为什么在文本字段上排序不仅仅是开箱即用:https://www.elastic.co/guide/en/elasticsearch/reference/current/fielddata.html
简而言之,文本字段通过分析器运行,这使您可以在搜索结束时获得匹配,但不是完全匹配。例如,从上面发布的链接中,您可以搜索“new”或“york”并找到“New York”的值,因为它已通过分析器运行。
如果您的字段是关键字,则必须搜索完全值才能找到它。
现在,它与排序有什么关系:排序和聚合等操作需要知道字段的精确值才能执行类似的操作。运行分析仪时,将存储分析的值,而不是确切的值。
我建议稍微改变你的映射,以包含这两种类型:
PUT my_index
{
"mappings": {
"emp": {
"properties": {
"name": {
"type": "text",
"fields": {
"keyword": {
"type": "keyword"
}
}
}
}
}
}
}
答案 2 :(得分:-1)
http://localhost:9200/companies/emp/_search?q= *&安培;排序= name.keyword:降序
您需要在名称
之后添加关键字