到目前为止,我可以过滤父母与孩子,并在儿童字段上对答案进行排序,就像魅力一样。见下文。
GET /parent_child_meta_poc/paren_doc/_search
{
"query": {
"has_child": {
"inner_hits": {},
"type": "most_read_doc",
"query": {
"function_score": {
"functions": [
{
"field_value_factor": {
"factor": 1,
"field": "read_count"
}
}
]
}
},
"score_mode": "avg"
}
}
}
来源:Matts gist
子映射示例:
{
"mappings": {
"most_read_doc": {
"_parent": {
"type": "paren_doc"
},
"properties": {
"parent_uri": {
"type": "string"
},
"read_count": {
"type": "long"
}
}
}
}
}
然而,这种限制来自于以下要求:
向我提供符合此搜索条件的所有文档,仅返回包含子项“most_read_doc”的文档,并在“most_read_doc.read_count”上对返回的父文档进行排序
基本上我想:
父/子似乎没有达到1.在任何类型的查询导致“嵌套:QueryParsingException ...没有为[functions]注册查询”“异常。根据我的搜索,没有正式的Elasticsearch解决方案。到目前为止,努力寻找一个可以解决这个问题的工作......
其他类似:
注意:我无法使用嵌套文档/将“read_count”与父项合并,因为我有两个系统对此索引应用更新。