【发布时间】:2019-12-16 12:59:00
【问题描述】:
这个问题可能在某个地方得到了回答,但我找不到。所以我在寻求帮助 我的产品模型有一个嵌套的属性列表。像这样的
[
{
ID: "Product1",
...
Properties: [
{ "Source": "Color", Value: "green"},
{ "Source": "Size", Value: "2"},
]
},
{
ID: "Product2",
...
Properties: [
{ "Source": "Color", Value: "blue"},
{ "Source": "Size", Value: "2"},
]
},
{
ID: "Product3",
....
Properties: [
{ "Source": "Color", Value: "red"},
{ "Source": "Size", Value: "1"},
]
},
]
索引映射:
"properties" : {
"type" : "nested",
"properties" : {
"source" : {
"type" : "text",
"fields" : {
"keyword" : {
"type" : "keyword",
"ignore_above" : 256
}
}
},
"value" : {
"type" : "text",
"fields" : {
"keyword" : {
"type" : "keyword",
"ignore_above" : 256
}
}
}
}
},
而且我需要我的搜索查询来仅查找颜色为绿色或蓝色且尺寸为 2 的产品。
我为我的搜索请求创建了这个查询,但它会返回一个空结果。
new Nest.NestedQuery
{
Path = new Nest.Field("properties"),
Query = new Nest.BoolQuery() {
Must = new Nest.QueryContainer[] {
new Nest.BoolQuery()
{
Must = new Nest.QueryContainer[] {
new Nest.TermQuery()
{
Field = new Nest.Field("properties.source.keyword"),
Value = "Color"
},
new Nest.TermsQuery()
{
Field = new Nest.Field("properties.value.keyword"),
Terms = new[] { "green", "blue"}
}
}
}
},
new Nest.BoolQuery()
{
Must = new Nest.QueryContainer[] {
new Nest.TermQuery()
{
Field = new Nest.Field("properties.source.keyword"),
Value = "Size"
},
new Nest.TermsQuery()
{
Field = new Nest.Field("properties.value.keyword"),
Terms = new[] { "2"}
}
}
}
}
}
}
你能帮我建立这种查询,我用错了什么吗? 谢谢你
【问题讨论】:
标签: c# elasticsearch filter nested nest