我们的表有一个嵌套的映射角色,如下所示:
{group: 123, roles: {boss: department1, manager: department2}}
现在我要查找组123中在Department1中有角色的所有文档。如何基于嵌套映射的值字段进行筛选?类似于:
{
"query": {
"bool": {
"must": [
{
"match": {
"group": "123"
}
},
{
"nested": {
"path": "roles",
"query": {
"match": {
"roles.???": "department1"
}
}
}
}
]
}
}
}
我知道如何通过嵌套对象键进行筛选,但无法找到通过“对象值”进行筛选。
受此答案的启发,您可以编写解决方案的脚本:
{
"min_score": 0.1,
"query": {
"function_score": {
"query": {
"match": {
"group": "123"
}
},
"functions": [
{
"script_score": {
"script": {
"source": """
for (def role : params["_source"]["roles"].values()) {
if (role == params.role) {
return 1
}
}
return 0;
""",
"params": {
"role": "department1"
}
}
}
}
]
}
}
}
但是要注意脚本的低效--它可能会变得非常慢。
相反,我建议重新考虑你的结构--保持嵌套性,但与
{
"group": 123,
"roles": [
{
"position": "manager",
"department": "department1"
},
{
"position": "boss",
"department": "department2"
}
]
}
问题内容: 我有一个由对象填充的ArrayList。 我的对象类称为有两个字段; 我想使用该字段过滤列表,为了进行测试,我使用了字符串“ test”。 我用了来自谷歌的番石榴,它可以过滤ArrayList。 这是我尝试的代码: 但是此代码不起作用。 问题答案: 这是正常的:Predicates.containsPattern()在s上操作,您的对象未实现。 您需要编写自己的谓词: 然后使用: 但是
下面是我的搜索响应示例,检索到4个结果。 现在,我想根据下面的标准,根据特定的“dir”字段值过滤上述搜索结果。 在且仅在以下情况下将搜索结果包含在响应中: 如果“dir”字段值等于“/shared”或“/private/hitesh” 如果“dir”字段值以“/shared/”或“/private/hitesh/”开头,则为其他 如何在ElasticSearch中实现上述功能?
问题内容: 我试图在AngularJS中创建一个自定义过滤器,该过滤器将通过特定属性的值过滤对象列表。在这种情况下,我要按“极性”属性(“正”,“中性”,“负”的可能值)进行过滤。 这是我没有过滤器的工作代码: HTML: 这是JSON格式的“ $ scope.tweets”数组: 我可以提出的最佳过滤器如下: 此方法返回一个空数组。从“ console.log(polarity)”语句中不会打印
问题内容: 我喜欢使用jq过滤json文件: 给定json包含对象数组: 我想过滤该列表以仅显示ID值为2和4的元素,因此预期的输出为: 如何使用jq过滤json?我玩过select和map,但是没有任何一个可以使用,例如: 问题答案: 从文档: 输入项 输出量 我认为您可以执行以下操作:
问题内容: 我有许多产品要重复使用ng-repeat,并且正在使用 按颜色过滤这些产品。过滤器正在运行,但是如果产品名称/说明等包含颜色,则在应用过滤器后该产品仍然存在。 如何将滤镜设置为仅应用于数组的颜色字段而不是每个字段? 问题答案: 请参阅过滤器页面上的示例。使用一个对象,并在color属性中设置颜色:
例如insert时需要忽略某个特定属性, update时只更新某些属性, 查询时需要跳过大字段等。 FieldFilter/FieldMatcher提供细致的过滤选项,包括: 黑名单(locked) 白名单(actived) 忽略空值(ignoreNull) 忽略数值0(ignoreZero) 忽略日期属性(ignoreDate) 忽略空字符串(ignoreBlankStr) 忽略数值型主键(ig