我正在尝试使用 Elastic Search,但我一直在尝试查询嵌套对象。
基本上我的对象是以下格式
{
"name" : "Some Name",
"field2": [
{
"prop1": "val1",
"prop2": "val2"
},
{
"prop1": "val3",
"prop2":: "val4"
}
]
}
我用于嵌套字段的映射如下。
PUT /someval/posts/_mapping
{
"posts": {
"properties": {
"field2": {
"type": "nested"
}
}
}
}
现在说我为 /field/posts/1 和 /field/posts/2 等插入元素。我有 k 个 field2.prop1 的值,我想要一个查询,它根据 K 中 field2.prop1 的大多数匹配对帖子进行排序我的价值观。什么是合适的查询。我也尝试了一个简单的过滤器,但即使这样似乎也不能正常工作。
GET /someval/posts/_search
{
"query": {
"filtered": {
"query": {
"match_all": {}
}
},
"filter" : {
"nested" : {
"path" : "field2",
"filter" : {
"bool" : {
"must" : [
{
"term" : {"field2.prop1" : "val1"}
}
]
}
},
"_cache" : true
}
}
}
}
上面的查询应该至少匹配第一个帖子。但它不返回匹配项。任何人都可以帮助澄清这里有什么问题吗?