matchQuery elasticsearch:如何使用java在弹性搜索中搜索字符串列表(通配符)

时间:2018-03-06 12:22:36

标签: java elasticsearch wildcard

尝试通过弹性搜索搜索字符串列表时遇到问题。

下面是我如何做的代码片段:

QueryBuilders.boolQuery().should(QueryBuilders.matchQuery("movies", Arrays.asList(("*"+list.getMovies().replace(",","*,*")+"*").split(","))));

但是当使用上面没有通配符的代码时,它会给出正确的结果。

QueryBuilders.boolQuery().should(QueryBuilders.matchQuery("movies", Arrays.asList(list.getMovies().split(","))

虽然我的要求是使用通配符在每个电影名称上获得结果。 我甚至尝试过wildCardQuery,但它一次不能超过1个元素,我需要在OR运算符上处理整个列表。

任何建议都将不胜感激。谢谢提前

1 个答案:

答案 0 :(得分:0)

您可以使用 QueryBuilders.regexpQuery ,而使用.*代替*。但是regexpQuery接受String field_name和String regular_expression作为参数。因此,您必须将。*附加到列表中的所有String值,并在单独的regexpQuery中添加每个字符串。