ElasticSearch (服务默认端口 9300 Web 管理平台端口 9200)

本文通过示例介绍了如何使用Java客户端操作Elasticsearch,包括文档的创建、搜索及不同类型的查询方式,如默认分词机制、模糊查询和词条查询等。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

@Test
public void elastic() throws Exception{
//创建搜索服务器对象
Client client = TransportClient
.builder()
.build().addTransportAddress(new InetSocketTransportAddress(InetAddress.getByName("127.0.0.1"),9300 ));

XContentBuilder builder = XContentFactory.jsonBuilder()
.startObject()
.field("id","1")
.field("title","elasticsearch的入门案列")
.field("context","ElasticSearch是一个基于Lucene的搜索服务器。"
+ "它提供了一个分布式多用户能力的全文搜索引擎,基于RESTful web接口。")
.endObject();
//创建文档对象
client.prepareIndex("blog1", "article", "1").setSource(builder).get();

//关闭连接
client.close();

}



@Test 

public void sechar() throws Exception{
//创建连接
Client client = TransportClient.builder().build()
.addTransportAddress(new InetSocketTransportAddress(InetAddress.getByName("127.0.01"), 9300));
//搜索数据
SearchResponse searchResponse = client.prepareSearch("blog1")
.setTypes("article")
.setQuery(QueryBuilders.matchAllQuery()).get(); //查询所有
SearchHits hits = searchResponse.getHits();
System.out.println("查询数据的条数" + hits.getTotalHits());
Iterator<SearchHit> iterator = hits.iterator();
while (iterator.hasNext()) {
SearchHit next = iterator.next();
System.out.println(next.getSourceAsString());
System.out.println("title:" + next.getSource().get("title"));
}
// 关闭client
client.close();
}




//默认分词机制

@Test 
public void sechar1() throws Exception{
//创建连接
Client client = TransportClient.builder().build()
.addTransportAddress(new InetSocketTransportAddress(InetAddress.getByName("127.0.01"), 9300));
//搜索数据
SearchResponse searchResponse = client.prepareSearch("blog1")
.setTypes("article")
.setQuery(QueryBuilders.queryStringQuery("程全")).get(); //默认分词机制   全 ,程 单个词
searchSelect(client, searchResponse);
}


//模糊查询
@Test 
public void sechar2() throws Exception{
//创建连接
Client client = TransportClient.builder().build()
.addTransportAddress(new InetSocketTransportAddress(InetAddress.getByName("127.0.01"), 9300));
//搜索数据
SearchResponse searchResponse = client.prepareSearch("blog1")
.setTypes("article")
.setQuery(QueryBuilders.wildcardQuery("context", "*程全*")).get();  //查询不到 说明词条中没有 程全
searchSelect(client, searchResponse);
}

//termQuery 词条查询
@Test 
public void sechar3() throws Exception{
//创建连接
Client client = TransportClient.builder().build()
.addTransportAddress(new InetSocketTransportAddress(InetAddress.getByName("127.0.01"), 9300));
//搜索数据
SearchResponse searchResponse = client.prepareSearch("blog1")
.setTypes("article")
.setQuery(QueryBuilders.termQuery("context", "全")).get();  //查询不到 说明词条中没有 程全
searchSelect(client, searchResponse);
}


### 配置Elasticsearch以开放特定IP和端口 为了使Elasticsearch仅接受来自特定IP地址的请求并限制其监听的网络接口,可以修改`elasticsearch.yml`配置文件中的几个关键参数。 #### 修改绑定地址 设置`network.host`参数来控制Elasticsearch实例应该绑定到哪个网络接口。如果希望服务只响应本地连接,则可将其设为`localhost`; 若要让服务器能够接收局域网内的其他机器发出的数据包,则应指定实际使用的内部IP地址;而当需要对外提供API访问时,通常会采用防火墙规则而非直接暴露给公网[^1]。 ```yaml network.host: "192.168.1.100" ``` 此行代码表示Elasticsearch将会监听位于192.168.1.100上的所有可用TCP/IP端口,并且只会处理发往该地址的数据流。 #### 设置HTTP端口号 默认情况下,Elasticsearch会在9200端口上运行RESTful Web服务。可以通过调整`http.port`属性来自定义这一数值: ```yaml http.port: 9200-9300 ``` 上述设定意味着程序将在范围92009300之间寻找一个未被占用的位置作为新的通信渠道. #### 应用安全措施 考虑到安全性,建议启用SSL/TLS加密传输层协议以及实施基本的身份验证机制。这不仅有助于保护敏感资料免遭窃听或篡改风险,同时也使得非法入侵者更难以利用已知的安全漏洞发起攻击: ```bash # 创建密钥库用于存储证书和其他秘密信息 bin/elasticsearch-certutil cert ca bin/elasticsearch-certutil cert --ca elastic-stack-ca.p12 # 将生成好的CA导入节点并将相应的客户端认证材料分发出去... ``` 另外,在生产环境中应当考虑部署反向代理(如Nginx),以便更好地管理外部流量并增强整体系统的防护能力。 #### 控制台命令应用更改 完成以上编辑操作后记得重启Elasticsearch进程从而使新策略生效: ```shell sudo systemctl restart elasticsearch.service ``` 或者如果是通过Docker容器化方式安装的话则执行如下指令: ```shell docker-compose down && docker-compose up -d ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值