ElasticSearch 笔记

一、索引

ES里,数据库(Database)对应的概念叫 索引(Index)。

1. 创建索引

PUT http://127.0.0.1:9200/shopping

2. 查看所有索引

GET http://127.0.0.1:9200/_cat/indices?v

3. 删除索引

DELETE http://127.0.0.1:9200/shopping

二、文档

ES里,数据库的表(Table)对应的概念是 类型(Type)。
然而在新版本ES里,已经弃用类型(Type)的概念了。
ES里,数据库的行(row)对应的概念是 文档(Document)。

1. 创建文档

POST http://127.0.0.1:9200/shopping/_doc
POST http://127.0.0.1:9200/shopping/_create

{
    "title":"小米手机",
    "category":"小米",
    "images":"http://www.gulixueyuan.com/xm.jpg",
    "price":3999.00
}

手动指定ID:URL后加上 /{id}

2. 查询单条文档

GET http://127.0.0.1:9200/shopping/_doc/1001

3. 查询所有文档

GET http://127.0.0.1:9200/shopping/_search

4. 修改文档

分为完全修改和部分修改。

完全修改

PUT http://127.0.0.1:9200/shopping/_doc/1001

{
    "title":"小米手机",
    "category":"小米",
    "images":"http://www.gulixueyuan.com/xm.jpg",
    "price":4999.00
}
部分修改

POST http://127.0.0.1:9200/shopping/_update/1001

{
    "doc": {
        "title": "华为手机"
    }
}
5. 删除文档

DELETE http://127.0.0.1:9200/shopping/_doc/1001

三、查询

方式1:

GET http://127.0.0.1:9200/shopping/_search?q=category:小米

方式2(推荐):

GET http://127.0.0.1:9200/shopping/_search

{
    "query": {
        "match": {
            "category": "小米"
        }
    }
}

match 改为 match_all 即为全量查询。

分页查询
{
    "query": {
        "match": {
            "category": "小米"
        }
    },
    "from": 0,
    "size": 2
}
限制查询字段
{
    "query": {
        "match": {
            "category": "小米"
        }
    },
    "from": 0,
    "size": 2,
    "_source": ["title"]
}
排序
{
    "query": {
        "match": {
            "category": "小米"
        }
    },
    "from": 0,
    "size": 2,
    "_source": ["title"],
    "sort": {
        "price": {
            "order": "desc"
        }
    }
}
多条件查询 bool,AND:关键字 must
{
    "query": {
        "bool": {
            "must": [
                {
                    "match": {
                        "category": "小米"
                    }
                },
                {
                    "match": {
                        "price": 3999.00
                    }
                }
            ]
        }
    }
}
多条件查询,OR:关键字 should
{
    "query": {
        "bool": {
            "should": [
                {
                    "match": {
                        "category": "小米"
                    }
                },
                {
                    "match": {
                        "price": 3999.00
                    }
                }
            ]
        }
    }
}
结果按范围过滤,关键字 filter
{
    "query": {
        "bool": {
            "should": [
                {
                    "match": {
                        "category": "小米"
                    }
                },
                {
                    "match": {
                        "price": 3999.00
                    }
                }
            ],
            "filter": {
                "range": {
                    "price": {
                        "gt": 3500
                    }
                }
            }
        }
    }
}
完全匹配 match_phrase

上面的 match 和 match_all 都属于模糊查询,会拆分关键词
如果要作为整体进行查询,应该用 match_phrase

{
    "query": {
        "match_phrase": {
            "category": "小华"
        }
    }
}
高亮查询
{
    "query": {
        "match": {
            "category": "小华"
        }
    },
    "highlight": {
        "fields": {
            "category": {}
        }
    }
}
聚合查询 aggs
{
    "aggs": {                        //聚合操作
        "price_group": {             //名称,随意起名
            "terms": {               //分组
                "field": "price"     //分组字段
            }
        }
    }
}
聚合查询,只留统计结果
{
    "aggs": {
        "price_group": {
            "terms": {
                "field": "price"
            }
        }
    },
    "size": 0
}
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

友情链接更多精彩内容