zoukankan      html  css  js  c++  java
  • 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 为查询所有的关键字;

  • 相关阅读:
    BZOJ2023: [Usaco2005 Nov]Ant Counting 数蚂蚁
    BZOJ2044: 三维导弹拦截
    BZOJ2982: combination
    Solidity(address的四个方法)
    Solidity基础
    如何搭建以太坊的私有链
    挖矿
    智能合约
    密码学
    比特币
  • 原文地址:https://www.cnblogs.com/lcmlyj/p/10583028.html
Copyright © 2011-2022 走看看