我有一个弹性搜索查询,如下所示。
{
"query":{
"bool":{
"filter":{
"bool":{
"must_not":{
"terms":{
"names":[
"john",
"jose"
]
}
}
}
}
}
}
}
我正在尝试在与查询相对应的代码中构建类似的东西。
BoolQuery.Builder builder = new BoolQueryBuilder();
List<String> names = ["john","jose"];
TermsQueryField field = new TermsQueryBuilder().value(names).build();
builder.mustNot(TermsQuery.of(t -> t.field("names").terms(field))._toQuery());
但是我在这一行中遇到错误,因为它期望值函数内的 FieldValue 列表而不是字符串列表。
TermsQueryField field = new TermsQueryBuilder().value(names).build();
有人可以帮忙吗?
您需要使用以下代码为您的
fieldValues
创建
names
List<FieldValue> fieldValues = names.stream().map(FieldValue::of).toList();
您还可以执行以下操作:
new TermsQueryField(names.Select(name => FieldValue.String(name)).ToList())