es查询类型及Java语法
时间: 2024-01-08 13:02:33 浏览: 28
ES(Elasticsearch)是一个基于Lucene的分布式全文搜索引擎,支持多种查询类型,其中包括:
1. Match Query:匹配查询,用于检索指定字段中包含指定关键词的文档。
2. Term Query:精确查询,用于检索指定字段中包含指定值的文档。
3. Range Query:范围查询,用于检索指定字段中符合指定范围的文档。
4. Bool Query:布尔查询,用于组合多个查询条件。
5. Wildcard Query:通配符查询,用于检索指定字段中包含指定通配符表达式的文档。
6. Fuzzy Query:模糊查询,用于检索指定字段中与指定值相似的文档。
7. Prefix Query:前缀查询,用于检索指定字段中以指定前缀开头的文档。
8. Regexp Query:正则表达式查询,用于检索指定字段中符合指定正则表达式的文档。
Java语法示例:
1. Match Query
```
SearchResponse response = client.prepareSearch("index")
.setQuery(QueryBuilders.matchQuery("field", "value"))
.execute()
.actionGet();
```
2. Term Query
```
SearchResponse response = client.prepareSearch("index")
.setQuery(QueryBuilders.termQuery("field", "value"))
.execute()
.actionGet();
```
3. Range Query
```
SearchResponse response = client.prepareSearch("index")
.setQuery(QueryBuilders.rangeQuery("field").from(0).to(10))
.execute()
.actionGet();
```
4. Bool Query
```
SearchResponse response = client.prepareSearch("index")
.setQuery(QueryBuilders.boolQuery()
.must(QueryBuilders.matchQuery("field1", "value1"))
.mustNot(QueryBuilders.termQuery("field2", "value2"))
.should(QueryBuilders.rangeQuery("field3").from(0).to(10)))
.execute()
.actionGet();
```
5. Wildcard Query
```
SearchResponse response = client.prepareSearch("index")
.setQuery(QueryBuilders.wildcardQuery("field", "value*"))
.execute()
.actionGet();
```
6. Fuzzy Query
```
SearchResponse response = client.prepareSearch("index")
.setQuery(QueryBuilders.fuzzyQuery("field", "value"))
.execute()
.actionGet();
```
7. Prefix Query
```
SearchResponse response = client.prepareSearch("index")
.setQuery(QueryBuilders.prefixQuery("field", "value"))
.execute()
.actionGet();
```
8. Regexp Query
```
SearchResponse response = client.prepareSearch("index")
.setQuery(QueryBuilders.regexpQuery("field", ".*value.*"))
.execute()
.actionGet();
```