Elastic產品簡介以及ElasticSearch搜索


參考官網:https://www.elastic.co/

中文網站:https://www.elastic.co/cn/

1. elastic產品簡介

  elastic有一系列的產品,其中有

(1)Elasticsearch: Distributed, RESTful search and analytics.

(2)Kibana:Visualize your data. Navigate the Stack.

(3)Beats:Collect, parse, and ship in a lightweight fashion. 

(4)Logstash:Ingest, transform, enrich, and output. 

 

  ELK是elasricsearch、logstash、kibana的首字母縮寫。由於加了Beats不太好加首字母,因此 Elasticsearch、Kibana、Beats 和 Logstash也稱為 ELK Stack。能夠安全可靠地獲取任何來源、任何格式的數據,然后實時地對數據進行搜索、分析和可視化。

2.ElasticSearch安裝與啟動

  es提供了linux、windows等操作系統的安裝包,也提供了docker的安裝包。

  安裝JDK環境這里就不說了,我安裝的是JDK8。

0.官方給出的步驟如下

1.下載安裝包

例如我下載的是:

 解壓后目錄如下:

2.啟動服務

windows下面用bin\elasticsearch.bat啟動

啟動后控制台輸入啟動信息如下:

瀏覽器訪問,linux的話可以用curl或者瀏覽器

   可以看到有版本信息以及集群信息。

 

啟動后用jps查看java進程:

C:\Users\Administrator>jps -l -v
18804 org.elasticsearch.bootstrap.Elasticsearch -Des.networkaddress.cache.ttl=60 -Des.networkaddress.cache.negative.ttl=10 -XX:+AlwaysPreTouch -Xss1m -Djava.awt.headless=true -Dfile.encoding=UTF-8 -Djna.nosys=true -XX:-OmitStackTraceInFastThrow -Dio.netty.noUnsafe=true -Dio.netty.noKeySetOptimization=true -Dio.netty.recycler.maxCapacityPerThread=0 -Dio.netty.allocator.numDirectArenas=0 -Dlog4j.shutdownHookEnabled=false -Dlog4j2.disable.jmx=true -Djava.locale.providers=COMPAT -Xms1g -Xmx1g -XX:+UseConcMarkSweepGC -XX:CMSInitiatingOccupancyFraction=75 -XX:+UseCMSInitiatingOccupancyOnly -Djava.io.tmpdir=C:\Users\ADMINI~1\AppData\Local\Temp\elasticsearch -XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=data -XX:ErrorFile=logs/hs_err_pid%p.log -XX:+PrintGCDetails -XX:+PrintGCDateStamps -XX:+PrintTenuringDistribution -XX:+PrintGCApplicationStoppedTime -Xloggc:logs/gc.log -XX:+UseGCLogFileRotation -XX:NumberOfGCLogFiles=32 -XX:GCLogFileSize=64m -XX:MaxDirectMemorySize=536870912 -Delasticsearch -Des.path.home=E:\ELK\elasticsearch-7.6.2 -Des.path.conf=E:\ELK\elasti

 

3.ES的主要配置

es的配置文件都位於config目錄中。
1. elasticsearch.yml 

   es的相關配置,這個文件關鍵的配置信息如下:

(1)cluster.name 集群名稱,以此作為是否是同一集群的判斷條件
(2)node.name 節點名稱,以此作為集群中不同節點的區分條件。
(3)network.host/http.port 網絡地址和端口,用於http和transport服務使用
(4)path.data 數據存儲地址
(5)path.log 日志存儲地址

 

ES有兩種模式:Development模式和Product模式,兩者區別如下

(1)以transport的地址是否綁定在localhost為判斷標准, 也就是 network.host ,默認綁定在localhost
(2)Development模式下在啟動時會以warning的方式提示配置檢查異常
(3)Production模式下在啟動時會以error的方式提提示配置檢查異常並退出

 

ES修改參數的第二種方式:bin/elasticsearch -Ehttp.port=19200,例如:

E:\ELK\elasticsearch-7.6.2\bin>elasticsearch.bat -Ehttp.port=19200

結果:

 

2. jvm.options   

  設置jvm內存相關參數以及GC相關參數。可以看到JVM堆的大小,默認是1g。


3. log4j2.properties 

  修改日志,可以修改哪些日志的啟動以及關閉。類似於我們普通web項目的日志配置。

3. ElasticSearch搭建集群

第一種是復制三個ELK軟件之后修改 elasticsearch.yml 文件,第二種是bat直接指定參數。

1. 創建三個data目錄,如下:

 2. 進入es/bin下執行下面三條命令:

elasticsearch.bat -Ehttp.port=9200 -Epath.data=E:/data/0
elasticsearch.bat -Ehttp.port=19200 -Epath.data=E:/data/1
elasticsearch.bat -Ehttp.port=29200 -Epath.data=E:/data/2

3. 查看集群信息

訪問:http://localhost:9200/_cat/nodes?v

   有一些內存信息以及集群信息,*表示是主節點。

 

也可以訪問集群的詳細信息:http://localhost:9200/_cluster/stats?pretty

{
  "_nodes" : {
    "total" : 3,
    "successful" : 3,
    "failed" : 0
  },
  "cluster_name" : "elasticsearch",
  "cluster_uuid" : "38N5jPU9S26K8zu7Cajb6w",
  "timestamp" : 1596635967456,
  "status" : "green",
  "indices" : {
    "count" : 0,
    "shards" : { },
    "docs" : {
      "count" : 0,
      "deleted" : 0
    },
    "store" : {
      "size_in_bytes" : 0
    },
    "fielddata" : {
      "memory_size_in_bytes" : 0,
      "evictions" : 0
    },
    "query_cache" : {
      "memory_size_in_bytes" : 0,
      "total_count" : 0,
      "hit_count" : 0,
      "miss_count" : 0,
      "cache_size" : 0,
      "cache_count" : 0,
      "evictions" : 0
    },
    "completion" : {
      "size_in_bytes" : 0
    },
    "segments" : {
      "count" : 0,
      "memory_in_bytes" : 0,
      "terms_memory_in_bytes" : 0,
      "stored_fields_memory_in_bytes" : 0,
      "term_vectors_memory_in_bytes" : 0,
      "norms_memory_in_bytes" : 0,
      "points_memory_in_bytes" : 0,
      "doc_values_memory_in_bytes" : 0,
      "index_writer_memory_in_bytes" : 0,
      "version_map_memory_in_bytes" : 0,
      "fixed_bit_set_memory_in_bytes" : 0,
      "max_unsafe_auto_id_timestamp" : -9223372036854775808,
      "file_sizes" : { }
    }
  },
  "nodes" : {
    "count" : {
      "total" : 3,
      "coordinating_only" : 0,
      "data" : 3,
      "ingest" : 3,
      "master" : 3,
      "ml" : 3,
      "voting_only" : 0
    },
    "versions" : [
      "7.6.2"
    ],
    "os" : {
      "available_processors" : 12,
      "allocated_processors" : 12,
      "names" : [
        {
          "name" : "Windows 8.1",
          "count" : 3
        }
      ],
      "pretty_names" : [
        {
          "pretty_name" : "Windows 8.1",
          "count" : 3
        }
      ],
      "mem" : {
        "total_in_bytes" : 38281224192,
        "free_in_bytes" : 11522334720,
        "used_in_bytes" : 26758889472,
        "free_percent" : 30,
        "used_percent" : 70
      }
    },
    "process" : {
      "cpu" : {
        "percent" : 0
      },
      "open_file_descriptors" : {
        "min" : -1,
        "max" : -1,
        "avg" : 0
      }
    },
    "jvm" : {
      "max_uptime_in_millis" : 327302,
      "versions" : [
        {
          "version" : "1.8.0_121",
          "vm_name" : "Java HotSpot(TM) 64-Bit Server VM",
          "vm_version" : "25.121-b13",
          "vm_vendor" : "Oracle Corporation",
          "bundled_jdk" : true,
          "using_bundled_jdk" : false,
          "count" : 3
        }
      ],
      "mem" : {
        "heap_used_in_bytes" : 775278448,
        "heap_max_in_bytes" : 3116630016
      },
      "threads" : 137
    },
    "fs" : {
      "total_in_bytes" : 125829115904,
      "free_in_bytes" : 18643275776,
      "available_in_bytes" : 18643275776
    },
    "plugins" : [ ],
    "network_types" : {
      "transport_types" : {
        "security4" : 3
      },
      "http_types" : {
        "security4" : 3
      }
    },
    "discovery_types" : {
      "zen" : 3
    },
    "packaging_types" : [
      {
        "flavor" : "default",
        "type" : "zip",
        "count" : 3
      }
    ],
    "ingest" : {
      "number_of_pipelines" : 0,
      "processor_stats" : { }
    }
  }
} 

   會以json的形式打印集群的信息。

補充:ES提供的一些其他查看集群以及節點信息的連接: 

/_cat/allocation
/_cat/shards
/_cat/shards/{index}
/_cat/master
/_cat/nodes
/_cat/tasks
/_cat/indices
/_cat/indices/{index}
/_cat/segments
/_cat/segments/{index}
/_cat/count
/_cat/count/{index}
/_cat/recovery
/_cat/recovery/{index}
/_cat/health
/_cat/pending_tasks
/_cat/aliases
/_cat/aliases/{alias}
/_cat/thread_pool
/_cat/thread_pool/{thread_pools}
/_cat/plugins
/_cat/fielddata
/_cat/fielddata/{fields}
/_cat/nodeattrs
/_cat/repositories
/_cat/snapshots/{repository}
/_cat/templates

 

補充:ES搜索之所以比其他快,是因為ES是倒排索引。

  相當於是先分詞,然后根據分詞記錄出現的ID。查找的時候可以快速的根據詞找到數據的ID進而查詢到元數據。

參考:https://blog.csdn.net/jiaojiao521765146514/article/details/83750548 

 

關於ES數據類型以及其他API參考:https://www.elastic.co/guide/en/elasticsearch/reference/current/index.html

ES中文API參考:https://www.elastic.co/guide/cn/elasticsearch/guide/current/getting-started.html 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM