elasticsearch是面向文档的,关系型数据库和elasticsearch客观的对比!
数据库 | 索引 (indices) |
---|---|
表(tables) | types |
行(rows) | documents |
字段(columns) | fields |
Relationnal DB | elasticsearch |
analyze:分词器
analyzer: ik_smart ik_max_word 两种分词选择
ik_smart: 最粗粒度分词器,ik_max_word: 最细粒度分词器
基本的Restful操作:
method | url地址 | 描述 |
---|---|---|
PUT | localhost:9200/索引名称/类型名称/文档id | 创建文档(自定义id) |
POST | localhost:9200/索引名称/类型名称/ | 创建文档(随机id) |
POST | localhost:9200/索引名称/类型名称/文档id/_update | 修改文档 |
DELETE | localhost:9200/索引名称/类型名称/文档id | 删除文档 |
GET | localhost:9200/索引名称/类型名称/文档id | 阅读指定文档 |
GET | localhost:9200/索引名称/类型名称/_search | 查询所有数据 |
简单查询操作:
GET /test1/type1/_search?request_cache=false { "query": { "match": { "name":{ "query": "马云", "analyzer": "ik_smart" } } }, "from": 0, "size": 1 }
其中from 和 size正好是sql中的limit的第一个和第二个参数
然后
GET /test1/type1/_search?request_cache=false
{
"query": {
"bool": {
"must": [
{
"match": {
"age": "12"
}
},
{
"match": {
"name": "马超"
}
}
]
}
},
"from": 0,
"size": 3
}
bool,must命令
用于过滤条件eq
如果把must改成should那就是只要满足其中一个条件即可查询出来
默认的分词器:keyword(整体),standard(拆分)
高亮显示:highlight
SpringBoot整合ES
导入依赖:
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-elasticsearch</artifactId>
</dependency>
然后在代码中
/**
* 创建索引
*/
@Test
void createIndex() throws IOException {
// 创建索引请求
CreateIndexRequest request = new CreateIndexRequest("snkkka1");
// 发送请求得到响应
CreateIndexResponse response = restHighLevelClient.indices().create(request, RequestOptions.DEFAULT);
System.out.println(response);
}