Elasticsearch学习入门

一、关于Elasticsearch

1.特点

Elasticsearch基于全文搜索引擎 Apache Lucene ,由Java开发而来,面向API进行搜索, Restful 风格,分布式文件存储。

2.面向文档:

  Elasticsearch 将数据以JSON的格式文档的形式;

3.索引:

一个文档就是一个索引,类似数据库中一个数据表;

 二、增删查改

一个索引只对应一种类型

 PUT 索引/类型/文档id 

增(自动生成id)

 POST 索引/类型 

此种方法生成的id

 DELETE 索引/类型/文档id 

 GET 索引/类型/文档id 

 GET 索引/类型/_search  

 _search 为查询关键字

 GET 索引/类型/_search?q=userName:liaoge777 

查询userName为liaoge777的数据,q为查询参数赋值

 _source 对应文档数据;

查询表达式

1.匹配搜索

GET 索引/类型/_search
{
    "query": {
        "match": {
            "userName": "liaoge777"
        }
    }
}

2.过滤搜索

GET 索引/类型/_search
{
    "query": {
        "bool": {
            "must": {
                "match": {
                    "userName": "lewis"
                }
            },
            "filter": {
                "range": {
                    "age": {"gt": 26}
                }
            }
        }
    }
}

同时匹配用户名为lewis 并且 age 区间是大于26的数据

3.全文搜索(传统数据库难以做到的)

GET 索引/类型/_search
{
    "query": {
        "match": {
            "favorite": "playing games"
        }
    }
}

分别回去匹配 playing 和 games词汇,并返回符合条件的数据,并使用_score字段表示匹配度

4.短语搜索(严格匹配短语,而不去分割匹配的词汇)

GET 索引/类型/_search
{
    "query": {
        "match_phrase": {
            "favorite": "playing games"
        }
    }
}

不会分别匹配 playing 和 games,严格匹配字段包含 playing games的数据

5.高亮搜索

GET 索引/类型/_search

{
    "query": {
        "match_phrase": {
            "favorite": "playing games"
        }
    },
    "highlight":{
        "fields": {
            "favorite": {}
        }
    }
}

对符合条件的"favorite"字段加上高亮

6.聚合

关键字 aggs 类似SQL中的 Group by ,聚合并得到计数

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

通过"age"字段分组,并得出分组计数结果

 _search 为查询所有的关键字;

猜你喜欢

转载自www.cnblogs.com/lcmlyj/p/10583028.html