Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/sorting/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sorting 未找到字段的映射以便在ElasticSearch中进行排序_Sorting_Mapping_<img Src="//i.stack.imgur.com/RUiNP.png" Height="16" Width="18" Alt="" Class="sponsor Tag Img">elasticsearch - Fatal编程技术网 elasticsearch,Sorting,Mapping,elasticsearch" /> elasticsearch,Sorting,Mapping,elasticsearch" />

Sorting 未找到字段的映射以便在ElasticSearch中进行排序

Sorting 未找到字段的映射以便在ElasticSearch中进行排序,sorting,mapping,elasticsearch,Sorting,Mapping,elasticsearch,如果发现某些文档不包含排序条件中使用的字段,则Elasticsearch在解析查询时抛出一个SearchParseException SearchParseException:解析失败[未找到[price]的映射以便进行排序] 我如何才能成功地搜索这些文档,即使有些文档缺少price字段?在进一步挖掘之后,我找到了如下所示的解决方案ignore\u unmapped应显式设置为true "sort" : [ { "rating": {"order" : "desc" , "igno

如果发现某些文档不包含排序条件中使用的字段,则Elasticsearch在解析查询时抛出一个
SearchParseException

SearchParseException:解析失败[未找到[price]的映射以便进行排序]


我如何才能成功地搜索这些文档,即使有些文档缺少
price
字段?

在进一步挖掘之后,我找到了如下所示的解决方案<在sort子句中,code>ignore\u unmapped应显式设置为
true

"sort" : [
       { "rating": {"order" : "desc" , "ignore_unmapped" : true} },
       { "price": {"order" : "asc" , "missing" : "_last" , "ignore_unmapped" : true} }
]
有关更多信息,请参阅Elasticsearch参考资料:


我也遇到了同样的问题(sorta;可能会出现一些错误,但也会出现一些结果),但在我的情况下,我的搜索是在根目录下进行的(没有指定索引),而我遇到的错误是因为搜索/订单也在查找Kibana索引


愚蠢的错误,但这可能会帮助其他人结束在这里。

显然ElasticSearch不会对空值进行排序。我假设它会将null视为在开始或结束处(与SQL排序一样),但我相信它也会触发此错误

因此,如果您看到此错误,您可能需要确保sort属性在发送到ElasticSearch时具有默认值

我在Rails+ElasticSearch+Tire中遇到了这个错误,因为排序列没有默认值,所以被作为null发送到ES

表示正在处理空值,但这不是我的经验。无论如何,这是值得一试的

对于那些正在寻找
忽略_未映射
未映射\u类型
请参见

请注意,“忽略未映射的类型”现在被弃用,取而代之的是“未映射的类型”。这是作为工作的一部分进行的

在1.4.0之前,存在ignore_unmapped布尔参数,该参数没有足够的信息来决定要发出的排序值,并且不适用于交叉索引搜索。它仍然受支持,但鼓励用户迁移到新的未映射类型

默认情况下,如果没有与字段关联的映射,则搜索请求将失败。unmapped_type选项允许忽略没有映射的字段,并且不按它们排序。此参数的值用于确定要发出的排序值。以下是如何使用它的示例:

{
    "sort" : [
        { "price" : {"unmapped_type" : "long"} },
    ],
    "query" : {
        "term" : { "user" : "kimchy" }
    }
}
如果查询的任何索引没有价格映射,则Elasticsearch将像处理long类型的映射一样处理它,该索引中的所有文档对此字段没有任何值。

Elasticsearch 6.4

只需在Kibana中指定索引即可

以前

GET/\u搜索
{
“查询”:{
“存在”:{
“字段”:“文档id”
}
},
“排序”:[
{
“文件id”:{“订单”:“asc”},
“创建于”:{“顺序”:“描述”}
}
]

}
如果您使用的是es 6.7

试试这个

sort : ["title.keyword:desc"]

您还可以使用脚本,它为您提供了一些灵活性:

"sort" : {
    "_script" : {
        "type" : "number",
        "script" : {
            "lang": "painless",
            "source": "return !doc['price'].empty ? doc['price'].value : 0"
        },
        "order" : "desc"
    }
}

当我们使用下面的代码时,其中添加了日期,会发生什么

因此有“文本”和“关键字”与字段相关联,因此如果我们需要在查询中使用聚合,我们通常需要关键字中的字段值

BEFORE

"_source":{....}
"query" : {...}
"sort": [
{
  "added_on": {
    "order": "desc"
  }
}
]

AFTER
"_source":{....}
"query" : {...}
"sort": [
{
  "added_on.keyword": {
    "order": "desc"
  }
}
]

如果原来的答案不适合你,让我来帮你。 对于ES 6.x请尝试下面的代码,不推荐使用“忽略未映射”

"sort" : [
       { "rating": {"order" : "desc" , "unmapped_type" : "long"} },
       { "price": {"order" : "asc" , "missing" : "_last" , "unmapped_type" : "long"} }
]
有关排序的更多信息,请访问:


您的问题/答案解决了我的问题-谢谢。我编辑了一些概括,如果这不适合你,请随意回滚。处理此问题的参考嗨,我有相同的问题,我不明白这是如何工作的。。。缺少的属性和忽略未映射的属性应该一起工作,对吗?例如,如果我将missing设置为“\u last”并将ignore\u unmapped设置为“false”,我仍然存在问题,但我希望文档在所有情况下都出现在结果中,即使它们没有属性。我有这个问题,如果您的_类型为空(即没有任何文档索引),则“ignore\u unmapped”不起作用看起来新的策略是使用我的查询直到今天一直有效,没有更新任何库等。但是今天我开始出现同样的错误。我现在添加了
“ignore_unmapping”:true
,它又开始工作了,但奇怪的是,幕后发生了什么!谁知道呢!不管怎样,它现在起作用了+1有人能澄清“缺失”和“未映射”之间的区别吗?对于某个字段,如果某些文档具有该字段,而其他文档没有,则该字段是否被视为“缺少”或“未映射”?“缺失”是否意味着该字段在文档中,但相应的值为空?我也有同样的问题。。但是当我指定ignoreunmapped时,我在搜索根时根本不会得到任何排序。。。如果我必须定义索引,这将限制搜索我的能力。。。我只想让所有匹配的结果按字段排序(如果存在),并为那些不存在的字段使用默认值。。编辑:它帮助了我-弹性7.3