尝试通过弹性搜索搜索字符串列表时遇到问题。
下面是我如何做的代码片段:
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运算符上处理整个列表。
任何建议都将不胜感激。谢谢提前
答案 0 :(得分:0)
您可以使用 QueryBuilders.regexpQuery ,而使用.*
代替*
。但是regexpQuery接受String field_name和String regular_expression作为参数。因此,您必须将。*附加到列表中的所有String值,并在单独的regexpQuery中添加每个字符串。