【发布时间】:2021-05-25 02:25:32
【问题描述】:
我正在尝试使用 ElasticSearch 按国家或城市或两者进行搜索。
当我使用 USA 作为搜索词按国家/地区进行搜索时,我得到了这些正确的结果。
| country | city | |
|---|---|---|
| mike@example.com | USA | Portland |
| You Can Also | USA | Chicago |
查询如下所示:
{
"body": {
"query": {
"bool": {
"must": [
{
"bool": {
"should": [
{
"match": {
"country": {
"query": "USA",
"operator": "and"
}
}
}
]
}
}
]
}
}
}
}
问题是,如果我还想使用术语 Portland 按城市搜索,我预计只会得到一个结果
| country | city | |
|---|---|---|
| mike@example.com | USA | Portland |
但我又得到了两个结果,就像我只按国家搜索时一样。
这两个字段的查询如下所示:
{
"body": {
"query": {
"bool": {
"must": [
{
"bool": {
"should": [
{
"match": {
"country": {
"query": "USA",
"operator": "and"
}
}
}
]
}
},
{
"bool": {
"should": [
{
"match": {
"country": {
"query": "USA",
"operator": "and"
}
}
},
{
"match": {
"city": {
"query": "Portland",
"operator": "and"
}
}
}
]
}
}
]
}
}
}
}
我做错了什么?
【问题讨论】:
标签: elasticsearch match