List<String> keywords = Arrays.asList("新华网", "人民网"); SearchRequest request = SearchRequest.of(s -> { s.index("yq_info_data"); s.from((pageIndex - 1) * pageSize); s.size(pageSize); s.trackTotalHits(t -> t.enabled(true)); return s; });如何根据keyword进行列表查询
时间: 2024-04-19 11:30:15 浏览: 62
通过输入框实时查询列表值
3星 · 编辑精心推荐
要根据关键字进行列表查询,你可以使用terms查询或者match查询。下面是两种不同的示例代码,展示如何使用这两种查询来实现此目的:
使用terms查询:
```java
List<String> keywords = Arrays.asList("新华网", "人民网");
SearchRequest request = SearchRequest.of(s -> {
s.index("yq_info_data");
s.query(q -> q.terms(t -> t.field("content").terms(keywords)));
s.from((pageIndex - 1) * pageSize);
s.size(pageSize);
s.trackTotalHits(t -> t.enabled(true));
return s;
});
```
使用match查询:
```java
List<String> keywords = Arrays.asList("新华网", "人民网");
SearchRequest request = SearchRequest.of(s -> {
s.index("yq_info_data");
s.query(q -> q.bool(b -> b.must(m -> m.match(ma -> ma.field("content").query(keywords.get(0))))
.must(m -> m.match(ma -> ma.field("content").query(keywords.get(1))))));
s.from((pageIndex - 1) * pageSize);
s.size(pageSize);
s.trackTotalHits(t -> t.enabled(true));
return s;
});
```
在上面的示例中,我们创建了一个包含多个关键字的List:`List<String> keywords`。
对于terms查询,我们使用terms查询构建器来创建一个terms查询,并将关键字应用于content字段。terms查询会匹配包含任何一个关键字的文档。
对于match查询,我们使用match查询构建器来创建一个match查询,并将关键字应用于content字段。match查询会匹配包含完全匹配关键字的文档。
最后,我们将查询请求的其他参数(如from、size和trackTotalHits)设置为所需的值。
请根据你的实际需求选择使用terms查询还是match查询,并修改关键字列表和其他查询参数。
阅读全文