【发布时间】:2020-08-19 04:59:40
【问题描述】:
以下是我的索引中单个记录的数据样本:
{
"_index" : "test_index",
"_type" : "_doc",
"_id" : "49605102905391763685971719283371021096086998966740189186",
"_score" : 2.8858113,
"_source" : {
"properties" : {
"activity" : [
{
"activityId" : 39,
"actionVersion" : 2,
"actionIdx" : 3
},
{
"activityId" : 39,
"actionVersion" : 2,
"actionIdx" : 4
},
{
"activityId" : 39,
"actionVersion" : 2,
"actionIdx" : 5
},
{
"activityId" : 42,
"actionVersion" : 2,
"actionIdx" : 3
},
{
"activityId" : 42,
"actionVersion" : 2,
"actionIdx" : 4
},
{
"activityId" : 42,
"actionVersion" : 2,
"actionIdx" : 5
}
]
}
}
}
我想根据 activitiyId 42 和 actionIdx 3 过滤结果。我正在使用下面的查询来获取结果。
{"size":-1,
"query": {
"bool": {
"should": {
"bool": {
"must": [
{
"match": {
"activityId": 42
}
},
{
"match": {
"actionIdx": 3
}
}
]
}
}
}
}
}
我正在获取包含 activityid 42 和 actionidx 3 的记录,但我的要求是在同一个对象中包含包含 activity 42 和 actionidx 3 的记录。以下是我使用上述搜索查询的结果:
"activity" : [
{
"activityId" : 39,
"actionVersion" : 2,
"actionIdx" : 2
},
{
"activityId" : 28,
"actionVersion" : 2,
"actionIdx" : 3
},
{
"activityId" : 42,
"actionVersion" : 2,
"actionIdx" : 2
},
{
"activityId" : 41,
"actionVersion" : 2,
"actionIdx" : 3
}
]
我的预期输出是:
"activity" : [
{
"activityId" : 39,
"actionVersion" : 2,
"actionIdx" : 2
},
{
"activityId" : 28,
"actionVersion" : 2,
"actionIdx" : 3
},
{
"activityId" : 42,
"actionVersion" : 2,
"actionIdx" : 3
}
]
这是映射索引。 Activity 没有嵌套
"properties" : {
"properties" : {
"activity" : {
"properties" : {
"actionIdx" : {
"type" : "long"
},
"actionVersion" : {
"type" : "long"
},
"activityId" : {
"type" : "long"
}
}
}
}
}
【问题讨论】:
-
你能提供你的索引映射吗?我正在处理您的搜索查询,并将提供一个工作示例
-
嗨@OpsterElasticsearchNinja,我尝试使用嵌套类型对象创建一个新索引,但我仍然面临没有得到结果的问题。
-
我已经给出了嵌套类型的完整示例,你试过了吗?
标签: database elasticsearch elastic-stack