Elasticsearch Query DSL允许我查找具有特定字段的文档:
GET /_search
{
"query": {
"exists" : { "field" : "firstname" }
}
}
Run Code Online (Sandbox Code Playgroud)
但似乎只对存在一个字段有效,如何检查是否存在 2 个字段?例如,我想找到同时存在firstname和lastname字段的用户。
您可以通过将两个存在于filter子句或must子句中来做到这一点,如下所示:
{
"query": {
"bool": {
"filter": [
{
"exists": {
"field": "firstname"
}
},
{
"exists": {
"field": "lastname"
}
}
]
}
}
}
Run Code Online (Sandbox Code Playgroud)
使用 infilter子句将提供与 bymust子句相同的输出。唯一的区别是带过滤器的不会计算分数,而带过滤器的会计算分数。根据您的需要使用。有关更多信息,请阅读此内容。
使用必须:
{
"query": {
"bool": {
"must": [
{
"exists": {
"field": "firstname"
}
},
{
"exists": {
"field": "lastname"
}
}
]
}
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
3999 次 |
| 最近记录: |