我有一个具有以下映射的人员数据库索引。
{
"person" : {
"sex" : { "type" : "string" },
"dob" : { "type" : "string" },
"fname" : { "type" : "string" },
"lname" : { "type" : "string" },
"phone" : { "type" : "string" }
}
}
我的需要是查找具有多个条件子句的所有匹配条目。
出生日期 + 电话 + 性别(或)fname + lname + dob
如何为上述条件创建查询或过滤器(使用 bool)。我还需要查询或过滤不区分大小写。
有什么想法吗?
谢谢
最佳答案
在 should 查询中嵌套两组 must 查询将满足您的要求,请参阅 bool欲了解更多信息:
curl -XGET 'http://localhost:9200/people/person/_search?pretty' -d '{
"query": {
"bool": {
"should": [
{"bool": {
"must": [
{"match": { "sex" : "male" }},
{"match": { "dob" : "2000-11-14" }},
{"match": { "phone" : "1234 67889" }}
]
}
},
{"bool": {
"must": [
{"match": { "fname" : "bob" }},
{"match": { "dob" : "2000-11-14" }},
{"match": { "lname" : "smith" }}
]
}
}
]
}
}
}'
<小时/>
Also I need to query or filter case-insensitive.
标准分析器将以小写形式索引数据 - match查询将对您的搜索词应用相同的分析器。
另外 - 将您的出生日期存储为日期也是一个好主意。
关于javascript - elasticsearch搜索过滤器等于问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26942721/