【问题标题】:matchQuery elasticsearch : How to search list of strings(wildcard) in elastic search using javamatchQuery elasticsearch:如何使用java在弹性搜索中搜索字符串列表(通配符)
【发布时间】:2018-03-06 12:22:35
【问题描述】:

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

下面是我如何做的代码sn-p:

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 运算符上处理整个列表。

任何建议将不胜感激。在此先感谢

【问题讨论】:

    标签: java elasticsearch wildcard


    【解决方案1】:

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

    【讨论】:

      猜你喜欢
      • 2014-03-02
      • 1970-01-01
      • 1970-01-01
      • 2018-08-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多