这是我索引中的示例文档
{
"name": "sandy",
"age": "25",
"ug":["B.tech"],
"pg":["MS","Phd"]
}
我想根据PG资格过滤候选人。我想要两种类型的过滤器。
在某些情况下,PG字段为空。因此,我只需要筛选出具有PG资格的人。
我希望PG资格的候选人“MS”。但其他人不喜欢“MBA”等等。这将作为“pg”数组下的第一个元素给出。 我如何在Elasticsearch中实现它?
答案 0 :(得分:0)
考虑到提供的信息,我建议如下。
对于您的第一个问题,请尝试使用存在过滤器来过滤包含数组中至少一个PG值的记录。
{ "查询":{ " constant_score":{ "存在":{ " field":" pg" } } } }
关于第二个问题,考虑到结果可以在数组中包含其他元素以及MS的事实如下所示。
{ "查询":{ " bool":{ "必须":[ { " term":{ " additionalSkill":" java" } }, { " constant_score":{ "过滤":{ "存在":{ " field":" additionalSkill" } } } } ] } } }
如果您的用例dint允许数组中除MS以外的任何其他元素,那么您可能必须使用elasticsearch中的脚本功能来限制结果记录。