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

  • 相关阅读:
    轻重搭配
    EF的优缺点
    使用bootstrap-select有时显示“Nothing selected”
    IIS发布 HTTP 错误 500.21
    js添加的元素无法触发click事件
    sql server查看表是否死锁
    sql server把一个库表的某个字段更新到另一张表的相同字段
    SQLSERVER排查CPU占用高的情况
    SQL server中如何按照某一字段中的分割符将记录拆成多条
    LINQ to Entities does not recognize the method 'System.DateTime AddDays(Double)' method, and this method cannot be translated into a store expression.
  • 原文地址:https://www.cnblogs.com/lcmlyj/p/10583028.html
Copyright © 2011-2022 走看看