【发布时间】:2015-12-21 12:09:21
【问题描述】:
我的索引中有一个相对简单的结构。客户有自己的属性,他的身份、电子邮件和电话作为嵌套属性。到目前为止,当我查询嵌套对象时,我的所有查询都可以正常工作。我正在开发类似全局搜索的东西,它允许用户输入任何信息,然后我向他展示相应的客户。为此,我正在迭代我拥有的所有嵌套属性(因为我不知道他到底在寻找什么)。我的查询如下所示:
{
"sort": ["_score"],
"query": {
"bool": {
"must": [{
"nested": {
"path": "identity",
"query": {
"bool": {
"must": [{
"multi_match": {
"query": "my search",
"fields": "identity.*"
}
}]
}
}
}
}, {
"nested": {
"path": "phones",
"query": {
"bool": {
"must": [{
"multi_match": {
"query": "my search",
"fields": "phones.*"
}
}]
}
}
}
}]
}
}
但是,当您有多个嵌套查询时,似乎应用了“AND”运算符,因此我没有得到正确的信息。如果我只搜索一个嵌套对象,我总是会得到正确的结果。我尝试将“运算符”=>“或”几乎无处不在,但没有任何效果,并且文档对这种情况没有太多说明(或者至少我找不到任何东西)。我错过了什么?
【问题讨论】:
-
也可以去掉"sort": ["_score"],这个是默认的。
标签: json elasticsearch operator-keyword nested-attributes