use*_*294 5 filter elasticsearch
对于Elasticsearch来说,我是新手.我有一个端点:
http://localhost:8000/v1/scholarship
Run Code Online (Sandbox Code Playgroud)
这将返回数据库中的所有奖学金.我可以添加一个过滤器:
http://localhost:8000/v1/scholarship?institution=Michigan State
Run Code Online (Sandbox Code Playgroud)
这将返回与特定机构相关的所有奖学金(在这种情况下,密歇根州)
我的奖学金模型有一个机构领域,如果没有任何机构隶属关系,则默认为空列表:
"institution" : [],
Run Code Online (Sandbox Code Playgroud)
我如何过滤所有没有机构的奖学金?
我尝试了这个查询,但所有奖学金都被退回(因为没有匹配)
http://localhost:8000/v1/scholarship?intitution=[]
Run Code Online (Sandbox Code Playgroud)
有任何想法吗?我在考虑创建一个新的终点,但这似乎打败了使用过滤器/ Elasticsearch的目的
小智 9
您可以使用Exists查询来查找空字段:
GET localhost:8000/v1/scholarship/_search
{
"query": {
"bool": {
"must_not": {
"exists": {
"field": "scholarship"
}
}
}
}
}
Run Code Online (Sandbox Code Playgroud)
这与以下字段匹配:
{ "scholarship": null }
{ "scholarship": [] }
{ "scholarship": [null] }
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1545 次 |
| 最近记录: |