我正在使用'必须'和'must_not'功能的布尔查询。它按预期工作,直到我到达一个3层深的房产。例如简单的匹配查询,如...ElasticSearch |布尔查询
GET city/town/_search
{
"query": {
"match": {
"contact.residence.address": "Rocky Road"
}
}
}
作品只是罚款,并返回结果,但如果我做同样的布尔查询如..
GET city/town/_search
{
"query": {
"bool": {
"must": [
{
"term": {
"contact.residence.address": "Rocky Road"
}
}
]
}
}
}
返回任何结果。为什么是这样?????请记住其他布尔查询,如..
GET city/town/_search
{
"query": {
"bool": {
"must": [
{
"term": {
"store.name": "Hendersons"
}
}
]
}
}
}
工作就好!它仅适用于3级深的任何字段,因此搜索任何属于prop1.prop3.prop3的术语
你可能有'contact.residence.address'场用“文本”类型映射。如果是这种情况,那么在第二个查询中用'match'替换'term'将按预期工作。我建议你阅读一节为什么查询词不符合我的文档?在官方文档[这里](https://www.elastic.co/guide/en/elasticsearch/reference/current/query-dsl-term-query.html#query-dsl-term-query)。 – avr