1.安装
官方下载地址:www.elastic.co/cn/download...
解压文件,然后创建一个es 用户,给用户文件权限
bash
chown -R es /opt/elasticsearch-9.2.2
修改配置文件,添加ES_JAVA_HOME
bash
vim /etc/profile
export ES_JAVA_HOME="/opt/elasticsearch-9.2.2/jdk"
souce /etc/profile
切换用户
su es
启动es
bash
./bin/elasticsearch -d
//设置密码 用户默认是:elastic
/opt/elasticsearch-9.2.2/bin/elasticsearch-reset-password -u elastic -i
浏览器可以使用插件 Multi Elasticsearch Heads,添加地址,测试连接
2.使用
2.1 创建索引
text和keyword的区别
| text | keyword | |
| 分词 | 是 | 否 |
| 存储 | 多个token | 字符串 |
| 模糊搜索 | 支持 | 不支持 |
| 排序 | 不支持 | 支持 |
| 聚合 | 不支持 | 支持 |
less
CreateIndexRequest request = CreateIndexRequest.of(c -> c .index("users") // 索引名称
.mappings(m -> m .properties("name", p -> p.text(t -> t)) //text类型
.properties("age", p -> p.integer(i -> i)) //数字类型
.properties("email", p -> p.keyword(k -> k)) // keyword类型 ) );
CreateIndexResponse response = client.indices().create(request);
2.2 增加
less
IndexResponse response = client.index(i -> i .index("users") .id("1")
.document(Map.of( "name", "张三", "age", 18, "email", "zhangsan@xxx.com" )) );
2.3 更新
less
UpdateResponse<Map> updateResponse = client.update(u -> u
.index("users")
.id("1") .doc(Map.of("age", 29)), Map.class );
2.4 删除
ini
DeleteResponse response = client.delete(d -> d .index("users") .id("1") );
2.5 查询
条件查询
less
SearchResponse<Map> search = client.search(s -> s
.index("users")
.query(q -> q
.match(m -> m .field("name") .query("张三") ) ), Map.class );
range 范围查询
less
SearchResponse<Map> rangeSearch = client.search(s -> s
.index("users")
.from(0).size(10)
.query(q -> q
.range(r -> r .field("age") .gte(JsonData.of(20)) .lte(JsonData.of(30)) ) ),
Map.class );
bool 多条件查询
must ==> and
must_not ==> 都不满足
should ==> or
filter ==> 满足条件
match ==> 全文索引
less
SearchResponse<Map> boolSearch = client.search(s -> s
.index("users")
.query(q -> q
.bool(b -> b
.must(m -> m.match(ma -> ma.field("name").query("张三")))
.filter(f -> f.range(r -> r.field("age").gte(20))) ) ), Map.class );