• 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 为查询所有的关键字;

  • 相关阅读:
    如何在win7下安装python包工具pip
    史上最易懂的Android jni开发资料--NDK环境搭建
    转——Nginx+keepalived实现负载均衡和高可用性 in ubuntu
    nodejs优化
    mysql linux 备份脚本
    转 分页代码
    仿微信界面
    (转载)Android 如何让service 不被杀死 && service 开机自动启动
    Python模块 Socket
    批处理中的多种注释方法
  • 原文地址:https://www.cnblogs.com/lcmlyj/p/10583028.html
Copyright © 2020-2023  润新知