java es match多个值
时间: 2024-02-23 13:03:04 浏览: 71
在 Java 中使用 Elasticsearch 查询多个值,可以使用 `TermsQueryBuilder` 类。以下是一个示例,展示如何使用 `TermsQueryBuilder` 查询同时匹配多个值的文档:
```java
import org.elasticsearch.index.query.QueryBuilders;
import org.elasticsearch.index.query.TermsQueryBuilder;
TermsQueryBuilder termsQueryBuilder = QueryBuilders.termsQuery("field", "value1", "value2");
```
在这个示例中,`field` 是你想要匹配的字段,`value1` 和 `value2` 是你想要匹配的两个值。如果你想要匹配更多的值,可以在 `termsQuery` 方法中添加更多的参数。然后,你可以将 `termsQueryBuilder` 对象添加到你的查询中,例如:
```java
import org.elasticsearch.action.search.SearchResponse;
import org.elasticsearch.action.search.SearchType;
import org.elasticsearch.client.transport.TransportClient;
import org.elasticsearch.common.transport.InetSocketTransportAddress;
import org.elasticsearch.index.query.QueryBuilders;
import org.elasticsearch.index.query.TermsQueryBuilder;
import org.elasticsearch.search.SearchHit;
import org.elasticsearch.search.SearchHits;
import org.elasticsearch.transport.client.PreBuiltTransportClient;
TransportClient client = new PreBuiltTransportClient(Settings.EMPTY)
.addTransportAddress(new InetSocketTransportAddress(InetAddress.getByName("localhost"), 9300));
TermsQueryBuilder termsQueryBuilder = QueryBuilders.termsQuery("field", "value1", "value2");
SearchResponse searchResponse = client.prepareSearch("index")
.setTypes("type")
.setSearchType(SearchType.DFS_QUERY_THEN_FETCH)
.setQuery(termsQueryBuilder)
.execute()
.actionGet();
SearchHits hits = searchResponse.getHits();
for (SearchHit hit : hits) {
System.out.println(hit.getSourceAsString());
}
client.close();
```
在这个示例中,我们使用 `TransportClient` 连接到 Elasticsearch,然后使用 `termsQueryBuilder` 对象设置查询条件,最后执行查询并打印匹配的结果。
阅读全文