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
Arrays Elasticsearch中的排序数组类型_Arrays_Sorting_<img Src="//i.stack.imgur.com/RUiNP.png" Height="16" Width="18" Alt="" Class="sponsor Tag Img">elasticsearch - Fatal编程技术网 elasticsearch,Arrays,Sorting,elasticsearch" /> elasticsearch,Arrays,Sorting,elasticsearch" />

Arrays Elasticsearch中的排序数组类型

Arrays Elasticsearch中的排序数组类型,arrays,sorting,elasticsearch,Arrays,Sorting,elasticsearch,我陷入了一个有弹性的陷阱,试图按子属性(数组)的大小对命中进行排序 我应用了以下主体查询: '{ "query": { "match_all": {} }, "sort": { "_script": { "type": "number", "script": "doc[\"myarray\"].values.size()", "order": "desc" } } }" 但是,由于弹性数组类型不在映射中(支持开箱即用),我

我陷入了一个有弹性的陷阱,试图按子属性(数组)的大小对命中进行排序

我应用了以下主体查询:

'{
"query": {
    "match_all": {}
},
"sort": {
    "_script": {
        "type": "number",
        "script": "doc[\"myarray\"].values.size()",
        "order": "desc"
    }
}
}"

但是,由于弹性数组类型不在映射中(支持开箱即用),我有一个错误,告诉我我的数组不是映射(正常…)

有什么想法吗


谢谢

如果您想要数组的大小,那么您必须使用弹性搜索提供的动态脚本。 (选择您的版本)。 如果您使用AWS托管ES,请务必阅读此内容


andrei stefan是正确的,映射时可以使用多字段作为类型

如果需要数组的大小,则可以使用弹性搜索提供的动态脚本。 (选择您的版本)。 如果您使用AWS托管ES,请务必阅读此内容


andrei stefan是正确的,您可以在映射时使用多字段作为类型

最好且推荐的方法是在同一文档中索引一个附加字段,该字段应包括字段大小作为数字,因为这在索引时是已知的。然后就在那个区域排序

您想要完成的看似简单的任务的困难在于,Elasticsearch中的数组被视为一个平面数据结构,所有内容都是“组合”的。如果您在此字段上使用的分析器可能会将字段拆分为术语,您是否计算唯一术语的数量或最初索引的值

例如,假设
myarray
类似于
[“abc 123”、“abc”、“123”、“abc abc”]
。您是否计算逗号分隔的值(总共4个值)或唯一项(
abc
123
因此总共只有2个值)

正确且最有效的方法是在文档中为长度本身编制索引


{“myarray”:[“abc 123”、“abc”、“123”、“abc abc”],“myarray_length”:4}

最好且推荐的方法是在同一文档中索引一个附加字段,该字段应包括字段大小作为数字,因为这在索引时是已知的。然后就在那个区域排序

您想要完成的看似简单的任务的困难在于,Elasticsearch中的数组被视为一个平面数据结构,所有内容都是“组合”的。如果您在此字段上使用的分析器可能会将字段拆分为术语,您是否计算唯一术语的数量或最初索引的值

例如,假设
myarray
类似于
[“abc 123”、“abc”、“123”、“abc abc”]
。您是否计算逗号分隔的值(总共4个值)或唯一项(
abc
123
因此总共只有2个值)

正确且最有效的方法是在文档中为长度本身编制索引

{“myarray”:[“abc 123”、“abc”、“123”、“abc abc”],“myarray_length”:4}