我希望实现一个MultiMatchQuery
来搜索像“美国队长”这样的术语,其中数据存储为"firstname": "Captain"
和"lastname":"America"
。
我目前有:
MultiMatchQueryBuilder match = QueryBuilders.multiMatchQuery(
text.toString(),
"username",
"firstname",
"lastname"
)
.type(MatchQueryBuilder.Type.PHRASE_PREFIX)
.operator(MatchQueryBuilder.Operator.AND);
但是,这不会返回任何结果。
答案 0 :(得分:1)
您可能需要一个multi_match with cross_fields,因为它更符合您的使用案例。
Haven没有尝试过代码(它只是盲目地写了),但它应该起作用或至少显示整体想法:
MultiMatchQueryBuilder match = QueryBuilders.multiMatchQuery(
text.toString(),
"username",
"firstname",
"lastname"
)
.type(MultiMatchQueryBuilder.Type.CROSS_FIELDS)
.operator(MatchQueryBuilder.Operator.AND);