为什么这个带有 must 子句的弹性搜索查询不返回任何文档?
Why is this elastic search query with must clause not returning any documents?
我无法将此弹性搜索查询 return 我希望它 return 的数据。这是我的查询:
curl -XGET '0.0.0.0:9200/local/candidate/_search?routing=company_1_candidates&pretty' -d '
{
"query":{
"filtered": {
"query": {
"multi_match": {
"fields": [
"candidate_name",
"candidate_city",
"candidate_country"
],
"query": "j",
"type": "phrase_prefix"
}
},
"filter": {
"bool": {
"must": [
{
"term": {
"company_id": 1
}
},
{
"term": {
"candidate_city": "Rotterdam"
}
}
]
}
}
}
}
}'
当我 运行 此查询仅在 must 子句中使用 company_id
项时,我找到了这条记录:
{"candidate_name":"J Kennis","candidate_id":2,"candidate_tags":[],"candidate_city":"Rotterdam","candidate_country":"Nederland","company_id":1}
但是当我在查询中包含 "candidate_city": "Rotterdam"
位时,结果 return 为零。我在这里遗漏了什么吗?
可能是因为 candidate_city 字段正在使用包含令牌分析器 "lower" 的分析器编制索引,但未分析术语过滤器。
如果您将过滤器更改为
"term": {"candidate_city": "rotterdam"}
要么
"match": {"candidate_city": "Rotterdam"}
您可能会取回文档。
我无法将此弹性搜索查询 return 我希望它 return 的数据。这是我的查询:
curl -XGET '0.0.0.0:9200/local/candidate/_search?routing=company_1_candidates&pretty' -d '
{
"query":{
"filtered": {
"query": {
"multi_match": {
"fields": [
"candidate_name",
"candidate_city",
"candidate_country"
],
"query": "j",
"type": "phrase_prefix"
}
},
"filter": {
"bool": {
"must": [
{
"term": {
"company_id": 1
}
},
{
"term": {
"candidate_city": "Rotterdam"
}
}
]
}
}
}
}
}'
当我 运行 此查询仅在 must 子句中使用 company_id
项时,我找到了这条记录:
{"candidate_name":"J Kennis","candidate_id":2,"candidate_tags":[],"candidate_city":"Rotterdam","candidate_country":"Nederland","company_id":1}
但是当我在查询中包含 "candidate_city": "Rotterdam"
位时,结果 return 为零。我在这里遗漏了什么吗?
可能是因为 candidate_city 字段正在使用包含令牌分析器 "lower" 的分析器编制索引,但未分析术语过滤器。
如果您将过滤器更改为
"term": {"candidate_city": "rotterdam"}
要么
"match": {"candidate_city": "Rotterdam"}
您可能会取回文档。