我是Elasticsearch的新手。 我的文档看起来像这样:
user_name : "test",
piInfo: {
profile: {
word_count: 535,
word_count_message: "There were 535 words in the input.",
processed_language: "en",
personality: [
{
name: "Openness",
category: "personality",
percentile: 0.0015293409544490655,
children: []
},
{
name: "Conscientiousness",
category: "personality",
percentile: 0.6803430984001135,
children: []
}
]
}
}
我要做的是按个性(例如:“开放性”)按“百分位数”对用户(用户名)进行排序
到目前为止,基于elasticsearch: Nested datatype和elasticsearch: Sorting within nested objects.我想到的是以下代码:
"query": {
"nested": {
"path": "piInfo.profile.personality",
"query": {
"bool": {
"must":
{ "match": { "piInfo.profile.personality.name": "Openness" }}
}
}
}
},
"sort" : {
"piInfo.profile.personality.percentile" : {
"order" : "asc",
"nested": {
"path": "piInfo.profile.personality",
"filter": {
"match": { "piInfo.profile.personality.name": "Openness" }
}
}
}
}
我收到此错误:
路径[piInfo.profile.personality]下的[嵌套]嵌套对象不是嵌套类型
这是逻辑,因为我没有映射它。我要从API提取数据,并按原样存储它。
有办法解决吗?
答案 0 :(得分:0)
您收到该错误,因为您只能对嵌套类型使用嵌套查询。换句话说,您需要在索引映射中声明“个性”作为数据类型nested
,然后再将任何数据加载到其中。默认类型为object
。使对象nested
意味着 Elasticsearch 将以不会丢失每个单个对象中字段之间的关系的方式存储它们。如果您不这样做,那么每个字段都将独立地建立到索引中。
更多信息在这里: Elasticsearch Nested Datatype