【问题标题】:Can I Use Regex In ElasticSearch with Java?我可以在 Java 的 ElasticSearch 中使用正则表达式吗?
【发布时间】:2014-02-18 21:36:51
【问题描述】:

我是 ElasticSearch 的新手,我阅读了 elasticsearch java-api 指南并学到了很多关于索引获取搜索过滤的知识,但是我认为 elasticsearch 指南不足以了解详细信息。我想了解每一个过滤、查询细节。例子很差。如果有人知道elasticsearch java示例文档请分享。我可以在ElasticSearch中使用正则表达式和Java吗?我在 google 中没有找到任何示例。

  Elastic Search Example :
   {
"regexp":{
    "name.first": "s.*y"
}

}

 {
"regexp":{
    "name.first": "s.*y",
    "flags" : "INTERSECTION|COMPLEMENT|EMPTY"
}

}

如何使这些代码适应 Java ?指南和谷歌中没有任何示例。

【问题讨论】:

    标签: java regex search elasticsearch filtering


    【解决方案1】:

    如果文档没有帮助,我喜欢阅读源代码。

    You can find the ES source here.

    Here is one of their tests that uses Java and parses regexpQuery

    public void testRegexpQueryBuilder() throws IOException {
            IndexQueryParserService queryParser = queryParser();
            Query parsedQuery = queryParser.parse(regexpQuery("name.first", "s.*y")).query();
            assertThat(parsedQuery, instanceOf(RegexpQuery.class));
            RegexpQuery regexpQuery = (RegexpQuery) parsedQuery;
            assertThat(regexpQuery.getField(), equalTo("name.first"));
        }
    

    【讨论】:

    • 非常感谢,这看起来很有用。你是最棒的。
    • 我想学习在搜索中使用这种方法。请帮助我
    【解决方案2】:

    我发现,如果有人需要,这是使用 regexp (ElasticSearch Java-api) 进行搜索的最佳方法;

      SearchResponse r = client.prepareSearch("Face".toLowerCase())
                        .setSearchType(SearchType.DFS_QUERY_THEN_FETCH)
                        .setQuery(spanOrQuery().clause(spanMultiTermQueryBuilder(regexpQuery("Message", "fener"))) )
                        .setFrom(0).setSize(60).setExplain(true)
                        .execute()
                        .actionGet();
    

    【讨论】:

      猜你喜欢
      • 2010-09-29
      • 2013-05-23
      • 1970-01-01
      • 2010-11-02
      • 2011-02-06
      • 2021-06-20
      • 1970-01-01
      • 1970-01-01
      • 2015-03-08
      相关资源
      最近更新 更多