我必须使用 Elasticsearch RestHighLevelClient 过滤/查询“url”字段上的多个 url。我形成了如下查询,但它给出了 0 条记录。
query.must(QueryBuilders.queryStringQuery("http://localhost:8080/test/*")
.field("url")
.lenient(true)
.escape(true)
.analyzeWildcard(true)
.fuzziness(Fuzziness.ZERO)
.defaultOperator(Operator.AND)
.boost(1.0f));
query.must(QueryBuilders.queryStringQuery("http://www.bbc.com/*")
.field("url")
.lenient(true)
.escape(true)
.analyzeWildcard(true)
.fuzziness(Fuzziness.ZERO)
.defaultOperator(Operator.AND)
.boost(1.0f));
如果我更改为下面,它将只给我匹配的记录 url http://localhost:8080/test/*
,因为我正在设置Operator.AND
这个,并且在 url 上查询 http://www.bbc.com/*
到Operator.OR
.
query.must(QueryBuilders.queryStringQuery("http://localhost:8080/test/*")
.field("url")
.lenient(true)
.escape(true)
.analyzeWildcard(true)
.fuzziness(Fuzziness.ZERO)
.defaultOperator(Operator.AND)
.boost(1.0f));
query.must(QueryBuilders.queryStringQuery("http://www.bbc.com/*")
.field("url")
.lenient(true)
.escape(true)
.analyzeWildcard(true)
.fuzziness(Fuzziness.ZERO)
.defaultOperator(Operator.OR)
.boost(1.0f));
所以它忽略了http://www.bbc.com/*
过滤器。
我在这里做错了吗?如何在同一字段上编写多个查询?