我想按字段存在对我的ES搜索结果进行排序,假设我得到了字段“价格”,并希望所有有价格的结果都在顶部,所有没有价格的结果都在底部。我知道你可以做一个简单的排序并添加“缺失”:“_last”,例如:
{“sort”:[{price':{missing':'u last',order':'asc'}}]}
但在这种情况下,结果也将按价格排序,我不想要它。
没有脚本有办法做到吗?
可以使用函数分数来实现这一点。
这将涉及使用权重来降低不包含特定字段的文档的分数。
例子:
{
"query": {
"function_score": {
"functions": [
{
"weight": 0.5,
"filter": {
"missing": {
"field": "price"
}
}
}
],
"query": {
"match_all": {}
}
}
}
}
这将导致具有字段价格的文档显示更高。
问题内容: 我的方法有问题。例如,我有带有Text()的索引字段: 当我尝试执行带有排序的搜索查询时,出现错误: elasticsearch.exceptions.RequestError:TransportError(400,’search_phase_execution_exception’,’默认情况下,文本字段上的字段数据是禁用的。在[title]上设置fielddata = true以便
问题内容: 我正在通过NEST c#使用ElasticSearch。我有很多关于人的信息 我希望能够按lastName以及长度的顺序对项目列表进行过滤和排序,因此名称中只有5个字符的人会出现在结果集的开头,然后是10个字符的人。 所以我想用一些伪代码做类似的事情 我是ElasticSearch的新手,所以任何示例都将非常有帮助。 问题答案: 您可以使用基于脚本的排序进行排序。 作为一个玩具示例,我
问题内容: 我有一些带有名称字段的文档。我正在使用名称字段的分析版本进行搜索和排序。排序是在一个级别上进行的,即名称首先是按字母顺序排序的。但是在字母列表中,名称是按字典顺序而不是按字母顺序排序的。这是我使用的映射: 谁能提供相同的解决方案? 问题答案: 深入研究Elasticsearch文档,我偶然发现了这一点: 排序和排序规则 不区分大小写的排序 假设我们有三个用户文档,其名称字段分别包含Bo
问题内容: 我正在尝试获取所有用户,并通过另一个表上的字段对他们进行排序,但是此字段并不总是存在吗? 用户-持有用户用户元-持有元数据,特别是“权重”,这是我要根据其排序的内容。 一个更具体的解决方案是自动为它们定义默认权重,但是无论如何,我可以使它不起作用吗?当前工作查询: 失去部分订单,任何/所有帮助将不胜感激! 问题答案: 如果您在表()之间具有关键关系,并且想要列出所有用户,则可以使用类似
问题内容: 这是一个表结构(例如测试): 查询如下: 但是我想按 字段大小/ 字段描述的 长度 排序。字段类型将为TEXT或BLOB。 问题答案: 该函数以字节为单位给出字符串的长度。如果要计算(多字节)字符,请改用以下函数:
问题内容: 我试图获取记录在“标题”中,然后是X个字符。 注意:并非所有记录都包含标题字段。 我努力了: 结果,我得到这个错误: 我该如何解决? 问题答案: 您需要考虑到某些文档可能具有空字段。因此,您可以使用常规的空安全运算符。另外,请确保改用POST方法: