ElasticSearch 基础入门 and 操作索引 and 操作文档

基本概念

索引:
    类似于MySQL的表。索引的结构为全文搜索作准备,不存储原始的数据。
    索引可以做分布式。每一个索引有一个或者多个分片 shard。每一个分片可以有多个副本 replica。
文档:
    类似与MySQL的一行记录。
映射:
    所有文档写入索引之前,会进行分析, 分析将输入的文本进行分割为词条,分析哪些词条会被过滤。
文档类型:
    每个文档都可以有不同的结构。
    不同的文档类不能为相同的属性设置不同的类型。
    【同一索引中所有文档类型中,一个title字段必须是相同的类型】

RestFul API 操作索引

1 创建索引

PUT:127.0.0.1:9200/test

{
    "settings": {
        "index": {
            "number_of_shards": "2",
            "number_of_replicas": "0"
        }
    }
}

2 删除索引

DELETE:127.0.0.1:9200/test

RestFul API 操作文档

1、添加数据

POST:/{索引}/{类型}/{id 非必需}

# 指定数据的唯一标示符
POST:127.0.0.1:9200/test/user/1001

{
    "id": 1010,
    "name": "张三",
    "age": 10,
    "sex": "男"
}

# 不指定数据的唯一标示符
POST:127.0.0.1:9200/test/user

{
    "id": 1011,
    "name": "张三",
    "age": 11,
    "sex": "男"
}

2、删除数据

DELETE:127.0.0.1:9200/test/user/1001
说明:
删除一个文档的时候不会立即从磁盘上移除,它只是被标记为已删除。
Elasticsearch 将会在以后添加更多索引的时候才会在后台进行删除内容的清理。

3、更新数据

在 Elasticsearch中,文档数据是不能被修改的,但是可以通过指定唯一标示符的方式进行覆盖更新【全量覆盖】
PUT:127.0.0.1:9200/test/user/1001

{
  "id": 1010,
  "name": "张三",
  "age": 11,
  "sex": "男"
}

【局部更新】
1、从旧文档中检索到JSON
2、修改
3、删除旧文档
4、索引新文档
POST:127.0.0.1:9200/test/user/1001/_update

{
    "doc":{
        "age": 100
    } 
}

4、查询数据

 根据ID搜索数据【GET】127.0.0.1:9200/test/user/1001
 获取所有数据默认10条【GET】127.0.0.1:9200/test/user/_search
 根据关键词搜索数据【GET】127.0.0.1:9200/test/user/_search?q=age:100

5、DSL搜索

Elasticsearch提供的丰富的灵活的查询语言叫做DSL查询【Query DSL】
POST:127.0.0.1:9200/test/user/_search

{
    "query": {
        "match": { 
            "age": 20
        }
    }
}

filter 过滤
must 匹配 

6、全文检索

POST:127.0.0.1:9200/test/user/_search

{
    "query": {
        "match": { 
            "name": "三 五"
        }
    }
}

7、高亮显示

POST:127.0.0.1:9200/test/user/_search

{
    "query": {
        "match": { 
            "name": "三 五"
        }
    },
    "highlight": {
        "fields": {
            "name": {}
        }
    }
}

8、聚合操作,类似SQL中的 group by 操作

POST:127.0.0.1:9200/test/user/_search

{
    "aggs": {
        "all_interests": {
            "terms": {
                "field": "age"
            }    
        }
    }
}

猜你喜欢

转载自www.cnblogs.com/laowenBlog/p/13406667.html