java使用elasticsearch需要哪些关键词
时间: 2025-05-20 14:08:27 浏览: 19
### Java 中使用 Elasticsearch 的关键词及其用法
#### 1. 集群管理关键字
- **ClusterName**: 定义Elasticsearch集群名称,用于标识特定的集群。默认情况下,集群名为`elasticsearch`[^3]。
```java
Settings settings = Settings.builder()
.put("cluster.name", "my-application").build();
```
- **NodeClient/RestHighLevelClient**: 这些类提供了与Elasticsearch交互的方式。现代应用更倾向于使用 `RestHighLevelClient` 来执行请求操作。
```java
RestHighLevelClient client = new RestHighLevelClient(
RestClient.builder(new HttpHost("localhost", 9200, "http")));
```
#### 2. 索引操作关键字
- **IndexRequest/IndexResponse**: 创建文档并将其存储到指定索引中的API调用对象;返回的结果包含有关创建过程的信息。
```java
IndexRequest request = new IndexRequest("posts");
request.id("1");
request.source(jsonBuilder().startObject().field("title", "Elasticsearch: real-time search and analytics").endObject());
IndexResponse response = client.index(request);
```
- **UpdateRequest/DeleteByQueryRequest**: 更新现有记录或批量删除符合条件的数据条目。
#### 3. 查询构建关键字
- **MatchAllQueryBuilder/TermQueryBuilder/RangeQueryBuilder...**: 构建不同类型查询条件的关键字。例如,匹配所有(`MatchAll`)、精确查找(`Term`)以及范围筛选(`Range`)等。
```java
SearchSourceBuilder sourceBuilder = new SearchSourceBuilder();
sourceBuilder.query(QueryBuilders.matchAllQuery()); // 使用 MatchAllQueryBuilder 查找全部数据
// 或者使用 TermQueryBuilder 实现精准匹配
sourceBuilder.query(QueryBuilders.termQuery("user", "kimchy"));
```
- **BoolQueryBuilder**: 组合多个查询条件形成复杂的逻辑表达式。
```java
BoolQueryBuilder boolQuery = QueryBuilders.boolQuery();
boolQuery.must(QueryBuilders.termQuery("status", "published"))
.mustNot(QueryBuilders.rangeQuery("age").from(18).to(65));
```
#### 4. 文档检索关键字
- **SearchRequest/SearchHit[]/Aggregations**: 发起搜索请求获取满足条件的结果集;解析响应体内的单个命中项数组;聚合分析统计信息。
```java
SearchRequest searchRequest = new SearchRequest("posts");
searchRequest.types("_doc"); // 如果版本支持的话可以设置类型参数
searchRequest.source(sourceBuilder);
SearchResponse searchResponse = client.search(searchRequest);
for (SearchHit hit : searchResponse.getHits()) {
System.out.println(hit.getSourceAsString());
}
```
#### 5. 数据映射定义关键字
- **XContentFactory/XContentType/ObjectMapper**: 处理JSON序列化反序列化的工具类,在配置字段属性时非常有用。
```java
Map<String, Object> jsonMap = Maps.newHashMapWithExpectedSize(1);
jsonMap.put("type", "text");
PutMappingRequest putMappingRequest = PutMappingRequest.lenient()
.index("posts")
.type("_doc")
.source(jsonMap,
XContentType.JSON);
client.indices().putMapping(putMappingRequest);
```
阅读全文
相关推荐



















