elasticsearch - 根据 Elasticsearch 中的嵌套字段值按表达式排序
问题描述
我有一个索引,其映射如下
{
"mappings": {
"properties": {
"content": {
"type": "text"
},
"entities": {
"type": "nested",
"properties": {
"name": {
"type": "text"
},
"score": {
"type": "double"
}
}
}
}
}
}
因此,索引由具有文本 ( content
) 和嵌套列表的文档组成entities
,每个文档都有一个name
和一个score
说明,例如,一个实体在文档中被提及的频率。当我构建一个查询时,我可能对多个实体感兴趣,比方说,( A and B or C
),这意味着我搜索具有A
andB
或只是的文档C
(并相应地构建我的query
)。此外,我尝试实现的是应用相同的排序规则。我的意思是(假设我对我的文档进行降序排序)在上述情况下的排名分数应该计算为max( min(a.score, b.score), c.score)
. 因此,简而言之, anyand
被转换为min
,而 anyor
变成max
. 假设构建该表达式不是问题,并且超出了我的问题范围。我的问题是如何将该表达式与 mins 和 maxes 映射到sort
a 的一部分query
?没有脚本可以实现吗?如果没有,我该如何编写脚本?
提前致谢
解决方案
推荐阅读
- python - Pandas 将组结果的所有列汇总为一个结果
- r - 向量 R 中的结构数
- spring-boot - 如何将百里香表单数据发布到控制器
- java - 颤振医生--android-licenses线程“主”java.lang.NoClassDefFoundError中的异常:javax/xml/bind/annotation/XmlSchema
- laravel - 问题 'SQLSTATE[42S02]: 未找到基表或视图
- oracle - Spring JDBC Oracle Session 改线程下
- ruby-on-rails - 我应该如何处理这个异常?
- angular - 自动调整列标题的大小Angular slickgrid
- graphql - 如何在一个 GraphQL 请求中返回多个结果?
- python - 根据前后组中的值以特定方式对值进行排序