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

  • 相关阅读:
    朴素贝叶斯分类-实战篇-如何进行文本分类
    朴素贝叶斯分类-理论篇-如何通过概率解决分类问题
    数据变换-归一化与标准化
    你还不懂傅里叶变换,那就过来掐死我吧
    Python快速入门 ---- 系列文章
    批处理中的时间计算详解
    使用electron+vue开发一个跨平台todolist(便签)桌面应用
    文科妹子都会用 GitHub,你这个工科生还等什么
    如约而至,.NET 5.0 正式发布
    如何进行正确的沟通?
  • 原文地址:https://www.cnblogs.com/lcmlyj/p/10583028.html
Copyright © 2011-2022 走看看