考虑一些包含具有一个属性的嵌套文档(技能)的索引文档(员工),比方说“标签”,以便每个员工都具有一些技能。我想从ElasticSearch索引中获取所有雇员(文档),他们掌握一组给定的技能,例如“ Python ”和“ Java ”。
我正在努力寻找一个合适的查询,以确保所有给定技能(“ Python”,“ Java”)在员工的技能集中至少出现一次,尽管它们不必同时出现!
我的映射与此相似:
{
"mappings": {
"employee": {
"_all": { "enabled": false },
"properties": {
"id" : { "type": "integer" },
"first_name" : { "type": "string" },
"last_name" : { "type": "string" },
"skills": {
"type": "nested",
"properties": {
"label": { "type": "string" },
"rating": { "type": "integer" }
}
}
}
}
}
}
因此,我正在寻找有关如何检索所需结果的任何解决方案(查询)。
您需要在查询中结合使用两个 nested
过滤器bool/filter
,如下所示:
POST /employees/employee/_search
{
"query": {
"bool": {
"filter": [
{
"nested": {
"path": "skills",
"query": {
"term": {
"skills.label": "python"
}
}
}
},
{
"nested": {
"path": "skills",
"query": {
"term": {
"skills.label": "java"
}
}
}
}
]
}
}
}
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句