zoukankan      html  css  js  c++  java
  • Elastic Search 学习之路(一)

    一、基本概念及缘由

    1.Sql vs nosql

    SQL:Structured Query Language

    Nosql:Not only SQL

    Relationship DB

    Relations:One-to-one relation、One-to-many、Many-to-many、Self-reference

    Mongo DB(humongous 大量的)、Redis  .ect (内存型数据库)

    Structure:Database Collencitons Documents

    2.为何使用搜索引擎

    项目中的搜索功能,如果数据量较小,那么可以直接使用mysql进行搜索;当数据量到达一定规模后,比如十亿、百亿,这时传统的关系型数据库就已经达到性能瓶颈,不适合这个项目,此时可以使用搜索引擎ElasticSearch。可能你会问,为什么不用内存型数据库。虽然内存型数据库读写性能很高,但是将庞大的数据量全都装进内存中不太现实。比如,使用PB级别的数据,每个内存节点96G的话,那么需要上万个节点,再考虑到数据的备份,那么会更多。这么高的成本,不现实。软件是服务于企业的,企业的目的是盈利。

    3.初步认识ElasticSearch

    目前常见的搜索引擎的首选,就是开源的ElasticSearch。它可以快速存储、搜索和分析海量数据。它的底层是开源库Lucene(Lucene必须手动去写接口进行调用)。Elastic对Lucene进行了封装,提供了基于Rest API的接口,可以直接操作接口。

    (official document path :  https://www.elastic.co/guide/en/elasticsearch/reference/current/rest-apis.html)

    学习环境:elasticsearch-7.5.2  windows 10

    3.1 基本概念

    Node、Cluster

    ElasticSearch的本质是分布式数据库,因此就会有节点(Node),一个节点相当于一个实例,一组节点构成集群(cluster)。

    IndexES会给所有存储的数据建立索引,经过处理后会有个反向索引。查找数据时直接查找该索引。

    ※Document※

    插入ES中的每条记录都是一个Document。它也是使用JSON格式,多个Document构成了一个Index。

    ※Type※

    分组的类型。

    e.g. curl -X PUT "localhost:9200/customer/_doc/3?pretty" -H "Content-Type: application/json" -d "{"name": "John Lee3"}"

    customer 是Index的名字。_doc是type名字。3表示该条记录的ID,它不一定是数字,任意字符串(如:“adc”)都可以。添加数据时,也可以不指定ID,这时,会自动添加一个随机字符串的ID。pretty表示易读的格式返回。

    3.2 Get Started
    (1)install path https://www.elastic.co/guide/en/elasticsearch/reference/current/install-elasticsearch.html
    (2)Run bin/elasticsearch (or binelasticsearch.bat on Windows)
    (3)Run curl http://localhost:9200/

    3.3 memo

    我照着官网学习时,用到的命令,复制下来备用。下面命令我亲自执行过,没有问题。

    curl -X GET "localhost:9200/_cat/health?v&pretty"
    curl -X PUT "localhost:9200/customer/_doc/3?pretty" -H "Content-Type: application/json" -d "{"name": "John Lee3"}"
    curl -H "Content-Type: application/json" -XPOST "localhost:9200/bank/_bulk?pretty&refresh" --data-binary "@accounts.json"
    curl -X GET "localhost:9200/customer/_doc/1?pretty"
    curl "localhost:9200/_cat/indices?v"
    curl -X GET "localhost:9200/bank/_search?pretty" -H "Content-Type: application/json" -d "{"query": { "match_all": {} },"sort": [{ "account_number": "asc" }]}"
    curl -X GET "localhost:9200/bank/_search?pretty" -H "Content-Type: application/json" -d"
    {
      "query": { "match_all": {} },
      "sort": [
        { "account_number": "asc" }
      ],
      "from": 10,
      "size": 10
    }"
    curl -X GET "localhost:9200/bank/_search?pretty" -H "Content-Type: application/json" -d"{  "query": { "match": { "address": "mill lane" } }}"

    4.踩坑

    1.使用curl命令时,注意事项。(环境:windows环境,在cmd.exe下执行的curl命令)

    一定要注意双引号以及转义字符。切记。按照官网复制来的命令,会有问题。

    curl -H "Content-Type: application/json" -X POST -d "{"abc":123}" "https://httpbin.org/post"

    参考文档:

    https://blog.csdn.net/aisemi/article/details/80212836

    https://www.elastic.co/guide/en/elasticsearch/reference/current/elasticsearch-intro.html      Elasticsearch official guides

    http://www.ruanyifeng.com/blog/2017/08/elasticsearch.html

  • 相关阅读:
    StateListDrawable状态选择器
    Shape
    每周随笔
    每周随笔
    每周随笔
    每周随笔
    每周随笔
    每周随笔
    每周随笔

  • 原文地址:https://www.cnblogs.com/lihao007/p/12291324.html
Copyright © 2011-2022 走看看