我对过滤后的查询存在问题。当我运行以下查询时:
{
"query":{
"filtered":{
"query":{
"regexp":{
"name":"chri.*"
}
},
"filter":{
"bool":{
"must":[
{"term": { "accountNonLocked": "false" }}
]
}
}
}
},"fields" : ["name", "id", "accountNonLocked","role"],
"from" : 0,
"size" : 10
}
我得回应
{
"took": 4,
"timed_out": false,
"_shards": {
"total": 5,
"successful": 5,
"failed": 0
},
"hits": {
"total": 2,
"max_score": 1,
"hits": [
{
"_index": "candidatindex",
"_type": "job",
"_id": "54c7867ecfcbbe42dc000478",
"_score": 1,
"fields": {
"name": [
"Christophe toto"
],
"accountNonLocked": [
true
],
"role": [
"DHR"
]
}
},
{
"_index": "candidatindex",
"_type": "job",
"_id": "54c7867ecfcbbe42dc000468",
"_score": 1,
"fields": {
"name": [
"Christophe Toto"
],
"accountNonLocked": [
true
],
"role": [
"CANDIDATE"
]
}
}
]}
}
但是当我在这个角色上添加一个过滤器时:
{
"query":{
"filtered":{
"query":{
"regexp":{
"name":"chri.*"
}
},
"filter":{
"bool":{
"must":[
{"term": { "accountNonLocked": "false" }},
{"term": { "role": "CANDIDATE" }}
]
}
}
}
},"fields" : ["name", "id", "accountNonLocked","role"],
"from" : 0,
"size" : 10
}
然后我得到一个空的结果:
{
"took": 3,
"timed_out": false,
"_shards": {
"total": 5,
"successful": 5,
"failed": 0
},
"hits": {
"total": 0,
"max_score": null,
"hits": []
}
}
有谁能告诉我我做错了什么?
答案 0 :(得分:2)
您的role
字段可能是analyzed
字符串。
所以要么尝试使用像
{"term": { "role": "candidate" }}
或将role
字段的映射更改为not_analyzed
(您需要重新索引数据以使更改生效)