您的位置:新葡亰496net > 奥门新萄京娱乐场 > 1源码阅读,学习之安装

1源码阅读,学习之安装

发布时间:2019-08-31 08:03编辑:奥门新萄京娱乐场浏览(76)

                

    1、单机安装


    先是创制安装路径,并解压安装包到该路线下:

    [root@myhost usr]# mkdir elasticsearch

    [root@myhost elasticsearch]# tar -zxvf /soft/elasticsearch-5.0.0.tar.gz

    出于elasticsearch无法从root客户运转,因而首先要求创立一个顾客用于elasticsearch。

    [root@myhost /]# groupadd elk

    [root@myhost /]# useradd es -g elk -p elasticsearch

    [root@myhost /]# passwd es

    接下来为该路径赋予可普通顾客的读写权限:

    [root@myhost usr]# chmod -R 777 elasticsearch/

    修改config/elasticsearch.yml 用于配置绑定的主机地址和端口号,以便别的机器能够访问。

    # ---------------------------------- Network

    network.host: 192.168.9.33

    http.port: 9200

    然后开放端口号9200:

    # firewall-cmd --permanent --zone=public --add-port=9200/tcp

    获得源码

    从https://github.com/elastic/elasticsearch 获取源代码,切换来要读取的分段。

    设置遇到:centos6.5  68个人      jdk1.8      elasticsearch6.1.1

    简介

    Elasticsearch是一个高可扩张的开源全文检索和剖判引擎,它同意存款和储蓄、寻觅和解析大气的多少,而且那么些进程是近实时的。它平日被视作底层引擎和本事,为复杂性的检索功效和要求提供动力。

       很多碎步快跑的小卖部,开拓职员多则3-4个,面前遭受巨大业务压力,日连夜的赶着上线,迅速试错,自然就没时间搭建部分基础设备,举个例子说logCenter,但早期

    标题一挥而就:


    1、解决“max file descriptors [4096] for elasticsearch process likely too low, increase to at least [65536]”错误

    修改开发文件/etc/secuity/limits.conf并在文件末尾增多:

    es hard nofile 65536

    es soft nofile 65536

    其间es是客商名。

    2、解决“max virtual memory areas vm.max_map_count [65530] likely too low, increase to at least [262144]”错误

    亟待修改系统基本参数,在“/etc/sysctl.conf”文件中追加如下内容:

    vm.max_map_count=262144

    接下来实践如下命令使基本修改立时见效:

    [root@myhost usr]# sysctl -p

    vm.max_map_count=262144

    接下来切换来es客户下直接开发银行:

    [es@myhost bin]$ ./elasticsearch

    当现身如下内容,代表成功运维:

    [2016-11-05T15:32:52,063][INFO ][o.e.n.Node              ] [] initializing ...

    [2016-11-05T15:32:52,165][INFO ][o.e.e.NodeEnvironment    ] [Ss79CYj] using [1] data paths, mounts [[/ (rootfs)]], net usable_space [190.3gb], net total_space [191.7gb], spins? [unknown], types [rootfs]

    [2016-11-05T15:32:52,165][INFO ][o.e.e.NodeEnvironment    ] [Ss79CYj] heap size [1.9gb], compressed ordinary object pointers [true]

    [2016-11-05T15:32:52,167][INFO ][o.e.n.Node              ] [Ss79CYj] node name [Ss79CYj] derived from node ID; set [node.name] to override

    [2016-11-05T15:32:52,169][INFO ][o.e.n.Node              ] [Ss79CYj] version[5.0.0], pid[18145], build[253032b/2016-10-26T04:37:51.531Z], OS[Linux/3.10.0-327.el7.x86_64/amd64], JVM[Oracle Corporation/Java HotSpot(TM) 64-Bit Server VM/1.8.0_102/25.102-b14]

    [2016-11-05T15:32:53,560][INFO ][o.e.p.PluginsService    ] [Ss79CYj] loaded module [aggs-matrix-stats]

    [2016-11-05T15:32:53,560][INFO ][o.e.p.PluginsService    ] [Ss79CYj] loaded module [ingest-common]

    [2016-11-05T15:32:53,560][INFO ][o.e.p.PluginsService    ] [Ss79CYj] loaded module [lang-expression]

    [2016-11-05T15:32:53,560][INFO ][o.e.p.PluginsService    ] [Ss79CYj] loaded module [lang-groovy]

    [2016-11-05T15:32:53,560][INFO ][o.e.p.PluginsService    ] [Ss79CYj] loaded module [lang-mustache]

    [2016-11-05T15:32:53,560][INFO ][o.e.p.PluginsService    ] [Ss79CYj] loaded module [lang-painless]

    [2016-11-05T15:32:53,561][INFO ][o.e.p.PluginsService    ] [Ss79CYj] loaded module [percolator]

    [2016-11-05T15:32:53,561][INFO ][o.e.p.PluginsService    ] [新葡亰496net,Ss79CYj] loaded module [reindex]

    [2016-11-05T15:32:53,561][INFO ][o.e.p.PluginsService    ] [Ss79CYj] loaded module [transport-netty3]

    [2016-11-05T15:32:53,561][INFO ][o.e.p.PluginsService    ] [Ss79CYj] loaded module [transport-netty4]

    [2016-11-05T15:32:53,562][INFO ][o.e.p.PluginsService    ] [Ss79CYj] no plugins loaded

    [2016-11-05T15:32:55,810][INFO ][o.e.n.Node              ] [Ss79CYj] initialized

    [2016-11-05T15:32:55,811][INFO ][o.e.n.Node              ] [Ss79CYj] starting ...

    [2016-11-05T15:32:56,252][INFO ][o.e.t.TransportService  ] [Ss79CYj] publish_address {192.168.8.33:9300}, bound_addresses {192.168.8.33:9300}

    [2016-11-05T15:32:56,258][INFO ][o.e.b.BootstrapCheck    ] [Ss79CYj] bound or publishing to a non-loopback or non-link-local address, enforcing bootstrap checks

    [2016-11-05T15:32:59,549][INFO ][o.e.c.s.ClusterService  ] [Ss79CYj] new_1源码阅读,学习之安装。master {Ss79CYj}{Ss79CYjUSveOkQMYseQn2Q}{rb_l_uyySHK0wNHoF7tYSw}{192.168.8.33}{192.168.8.33:9300}, reason: zen-disco-elected-as-master ([0] nodes joined)

    [2016-11-05T15:32:59,621][INFO ][o.e.h.HttpServer        ] [Ss79CYj] publish_address {192.168.8.33:9200}, bound_addresses {192.168.8.33:9200}

    [2016-11-05T15:32:59,621][INFO ][o.e.n.Node              ] [Ss79CYj] started

    [2016-11-05T15:32:59,658][INFO ][o.e.g.GatewayService    ] [Ss79CYj] recovered [0] indices into cluster_state

    能够从浏览器中拜会:

    特意表明:ES5.0版本还不协理plugin安装。

    导入idea

    是因为现行反革命elasticsearch使用gradle实行代码管理(作弄下,为什么从maven改成gradle,拔尖难用),所以必要超前设置gradle。
    gradle安装达成后,将代码导入idea,这些历程供给您钦命gradle路线。

    新葡亰496net 1

    品类引进.png

     

    基本功概念

    Elasticsearch中有几个中心的定义,通晓这几个概念对于ES的上学依然很有帮带的。

    花色不平稳,bug又多,每便都跑到生育去找日志,确实也小小的方便,用elk只怕用hadoop做日志大旨,纵然都以没难题的,但依据开销和人口依然怎么简化怎么来,

    2、集群配置


    透过如下配置,将得以兑现最宗旨的集群效果与利益,集群的本性提高还索要参谋质量调优一节。

    Elasticsearch组成集群时,要求的节点数应该是奇数。

    第一必要开放每一台安装Elasticsearch节点的端口号9300:

    # firewall-cmd --permanent --zone=public --add-port=9300/tcp

    接下来配置每三个极端节点的陈设文件“/config/elasticsearch.yml”,如下所示

    cluster.name: elkCluster

    node.name: node-33

    bootstrap.memory_lock: false

    discovery.zen.ping.unicast.hosts: ["192.168.9.32", "192.168.9.33","192.168.9.34"]

    discovery.zen.minimum_master_nodes: 1

    编译Elasticsearch源码

    假诺举行gradle build.gradle会编写翻译失利,不知道是什么样鬼。
    一贯运行:gradle idea
    长期下载的等候进程。。。。

    编写翻译成功后,文件目录

    新葡亰496net 2

    源码目录

    Elasticsearch核心包

    新葡亰496net 3

    核心包

    一、启动 [root@localhost bin]# ./elasticsearch -d -d在后台运维

    近实时(Near Realtime NRT)

    Elasticsearch是一个近实时的搜寻平台,近实时的情趣是指从您创立索引到你可见寻找那一个文书档案那些历程,这么些历程时间大约是1秒钟。

    本篇就来讲说向来使用log4net的ElasticSearchAppender扩张间接将log写入到es中。

    参数表明:


    1、cluster.name

    时下es的集群名称,es会自动发现在同一网段下的es,假若在同一网段下有多少个集群,就能够用那天天性来分别差异的集群。

    启动Elasticsearch

    在那之中bootstrap包是elasticsearch系统运营包,上面包车型地铁elasticsearch.java是运维入口,直接运维main函数。会发掘调节台报错
    <pre>
    Exception in thread "main" java.lang.IllegalStateException: path.home is not configured
    at org.elasticsearch.env.Environment.<init>(Environment.java:115)
    at org.elasticsearch.node.internal.InternalSettingsPreparer.prepareEnvironment(InternalSettingsPreparer.java:93)
    at org.elasticsearch.bootstrap.Bootstrap.initialEnvironment(Bootstrap.java:257)
    at org.elasticsearch.bootstrap.Bootstrap.init(Bootstrap.java:297)
    at org.elasticsearch.bootstrap.Elasticsearch.init(Elasticsearch.java:123)
    at org.elasticsearch.bootstrap.Elasticsearch.execute(Elasticsearch.java:114)
    at org.elasticsearch.cli.SettingCommand.execute(SettingCommand.java:54)
    at org.elasticsearch.cli.Command.mainWithoutErrorHandling(Command.java:122)
    at org.elasticsearch.cli.Command.main(Command.java:88)
    at org.elasticsearch.bootstrap.Elasticsearch.main(Elasticsearch.java:91)
    at org.elasticsearch.bootstrap.Elasticsearch.main(Elasticsearch.java:84)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.lang.reflect.Method.invoke(Method.java:498)
    at com.intellij.rt.execution.application.AppMain.main(AppMain.java:147)
    Refer to the log for complete error details.
    </pre>

    这么些荒唐是尚未点名安顿文件目录,大家知晓在安装elasticsearch时候,在${ES_HOME}/config上边有elasticsearch.yml、jvm.options、log4j2.properties配备文件,而笔者辈要钦命的正是那么些安排文件。elasticsearch源码目录下的distribution/resources目录下正是自带了那个布置文件,能够一向内定:

    新葡亰496net 4

    钦定安排文件目录

    点击运营继续报错:
    <pre>
    2017-03-08 11:06:11,447 main ERROR Could not register mbeans java.security.AccessControlException: access denied ("javax.management.MBeanTrustPermission" "register")
    at java.security.AccessControlContext.checkPermission(AccessControlContext.java:472)
    at java.lang.SecurityManager.checkPermission(SecurityManager.java:585)
    at com.sun.jmx.interceptor.DefaultMBeanServerInterceptor.checkMBeanTrustPermission(DefaultMBeanServerInterceptor.java:1848)
    at com.sun.jmx.interceptor.DefaultMBeanServerInterceptor.registerMBean(DefaultMBeanServerInterceptor.java:322)
    at com.sun.jmx.mbeanserver.JmxMBeanServer.registerMBean(JmxMBeanServer.java:522)
    at org.apache.logging.log4j.core.jmx.Server.register(Server.java:389)
    at org.apache.logging.log4j.core.jmx.Server.reregisterMBeansAfterReconfigure(Server.java:167)
    at org.apache.logging.log4j.core.jmx.Server.reregisterMBeansAfterReconfigure(Server.java:140)
    at org.apache.logging.log4j.core.LoggerContext.setConfiguration(LoggerContext.java:541)
    at org.apache.logging.log4j.core.LoggerContext.start(LoggerContext.java:258)
    at org.apache.logging.log4j.core.impl.Log4jContextFactory.getContext(Log4jContextFactory.java:206)
    at org.apache.logging.log4j.core.config.Configurator.initialize(Configurator.java:220)
    at org.apache.logging.log4j.core.config.Configurator.initialize(Configurator.java:197)
    at org.elasticsearch.common.logging.LogConfigurator.configureStatusLogger(LogConfigurator.java:125)
    at org.elasticsearch.common.logging.LogConfigurator.configureWithoutConfig(LogConfigurator.java:67)
    at org.elasticsearch.cli.Command.main(Command.java:85)
    at org.elasticsearch.bootstrap.Elasticsearch.main(Elasticsearch.java:91)
    at org.elasticsearch.bootstrap.Elasticsearch.main(Elasticsearch.java:84)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.lang.reflect.Method.invoke(Method.java:498)
    at com.intellij.rt.execution.application.AppMain.main(AppMain.java:147)
    </pre>
    本条标题在https://github.com/elastic/elasticsearch/issues/21932 看到是权力难题,可是开采对大家这么起步并不起成效。
    可以创制叁个elasticsearch.policy文件,然后在里头写入:
    <pre>
    grant {
    permission javax.management.MBeanTrustPermission "register";
    permission javax.management.MBeanServerPermission "createMBeanServer";
    };
    </pre>
    下一场放倒distribution/src/main/resources/config下,然后再通过jvm参数钦赐:

    新葡亰496net 5

    指定policy文件

    点击运转继续报错:

    <pre>
    [2017-03-08T10:51:22,451][WARN ][o.e.b.ElasticsearchUncaughtExceptionHandler] [] uncaught exception in thread [main]
    org.elasticsearch.bootstrap.StartupException: java.lang.IllegalStateException: jar hell!
    class: jdk.packager.services.UserJvmOptionsService
    jar1: /Library/Java/JavaVirtualMachines/jdk1.8.0_91.jdk/Contents/Home/lib/ant-javafx.jar
    jar2: /Library/Java/JavaVirtualMachines/jdk1.8.0_91.jdk/Contents/Home/lib/packager.jar
    at org.elasticsearch.bootstrap.Elasticsearch.init(Elasticsearch.java:127) ~[main/:?]
    at org.elasticsearch.bootstrap.Elasticsearch.execute(Elasticsearch.java:114) ~[main/:?]
    at org.elasticsearch.cli.SettingCommand.execute(SettingCommand.java:54) ~[main/:?]
    at org.elasticsearch.cli.Command.mainWithoutErrorHandling(Command.java:122) ~[main/:?]
    at org.elasticsearch.cli.Command.main(Command.java:88) ~[main/:?]
    at org.elasticsearch.bootstrap.Elasticsearch.main(Elasticsearch.java:91) ~[main/:?]
    at org.elasticsearch.bootstrap.Elasticsearch.main(Elasticsearch.java:84) ~[main/:?]
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[?:1.8.0_91]
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) ~[?:1.8.0_91]
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[?:1.8.0_91]
    at java.lang.reflect.Method.invoke(Method.java:498) ~[?:1.8.0_91]
    at com.intellij.rt.execution.application.AppMain.main(AppMain.java:147) ~[idea_rt.jar:?]
    </pre>
    以此是由于Elasticsearch中的一个UserJvmOptionsService类和jdk类争辩,未来先化解的三个方法是将ant-javafx.jar去掉,前提是你不应用该JavaFX成效。能够将其重名叫ant-javafx.jar.back。这种方式不是最佳的,能够寻求越来越好的化解格局。

    三番两次报错误:
    <pre>
    org.elasticsearch.bootstrap.StartupException: java.lang.IllegalStateException: Unsupported transport.type []
    at org.elasticsearch.bootstrap.Elasticsearch.init(Elasticsearch.java:127) ~[main/:?]
    at org.elasticsearch.bootstrap.Elasticsearch.execute(Elasticsearch.java:114) ~[main/:?]
    at org.elasticsearch.cli.SettingCommand.execute(SettingCommand.java:54) ~[main/:?]
    at org.elasticsearch.cli.Command.mainWithoutErrorHandling(Command.java:122) ~[main/:?]
    at org.elasticsearch.cli.Command.main(Command.java:88) ~[main/:?]
    at org.elasticsearch.bootstrap.Elasticsearch.main(Elasticsearch.java:91) ~[main/:?]
    at org.elasticsearch.bootstrap.Elasticsearch.main(Elasticsearch.java:84) ~[main/:?]
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[?:?]
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) ~[?:?]
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[?:?]
    at java.lang.reflect.Method.invoke(Method.java:498) ~[?:1.8.0_91]
    at com.intellij.rt.execution.application.AppMain.main(AppMain.java:147) ~[idea_rt.jar:?]
    Caused by: java.lang.IllegalStateException: Unsupported transport.type []
    at org.elasticsearch.common.network.NetworkModule.getTransportSupplier(NetworkModule.java:214) ~[main/:?]
    at org.elasticsearch.node.Node.<init>(Node.java:401) ~[main/:?]
    at org.elasticsearch.node.Node.<init>(Node.java:232) ~[main/:?]
    at org.elasticsearch.bootstrap.Bootstrap$6.<init>(Bootstrap.java:241) ~[main/:?]
    at org.elasticsearch.bootstrap.Bootstrap.setup(Bootstrap.java:241) ~[main/:?]
    at org.elasticsearch.bootstrap.Bootstrap.init(Bootstrap.java:333) ~[main/:?]
    at org.elasticsearch.bootstrap.Elasticsearch.init(Elasticsearch.java:123) ~[1源码阅读,学习之安装。main/:?]
    ... 11 more
    </pre>

    其一是出于依赖的transport等jar并不曾找到,能够在品种根目录找到models模块,然后将上边目录打包,然后copy到distribution/src/main/models目录下,也能够直接去官方网址下载zip包,解压后一向copy。
    留意:注意copy的本子,借使版本差异等,有相当的大只怕出现版本争辨。

    ok运维成功

    <pre>
    [2017-03-08T14:23:00,982][INFO ][o.e.n.Node ] [] initializing ...
    [2017-03-08T14:23:01,074][INFO ][o.e.e.NodeEnvironment ] [JotwXSM] using [1] data paths, mounts [[/ (/dev/disk1)]], net usable_space [115.5gb], net total_space [177.8gb], spins? [unknown], types [hfs]
    [2017-03-08T14:23:01,074][INFO ][o.e.e.NodeEnvironment ] [JotwXSM] heap size [3.5gb], compressed ordinary object pointers [true]
    [2017-03-08T14:23:01,076][INFO ][o.e.n.Node ] node name [JotwXSM] derived from node ID [JotwXSM9TR23cYhO1CstiQ]; set [node.name] to override
    [2017-03-08T14:23:01,077][INFO ][o.e.n.Node ] version[5.2.1-SNAPSHOT], pid[7688], build[Unknown/Unknown], OS[Mac OS X/10.11.6/x86_64], JVM[Oracle Corporation/Java HotSpot(TM) 64-Bit Server VM/1.8.0_91/25.91-b14]
    [2017-03-08T14:23:01,077][WARN ][o.e.n.Node ] version [5.2.1-SNAPSHOT] is a pre-release version of Elasticsearch and is not suitable for production
    [2017-03-08T14:23:04,574][INFO ][o.e.p.PluginsService ] [JotwXSM] loaded module [aggs-matrix-stats]
    [2017-03-08T14:23:04,574][INFO ][o.e.p.PluginsService ] [JotwXSM] loaded module [ingest-common]
    [2017-03-08T14:23:04,574][INFO ][o.e.p.PluginsService ] [JotwXSM] loaded module [lang-expression]
    [2017-03-08T14:23:04,575][INFO ][o.e.p.PluginsService ] [JotwXSM] loaded module [lang-groovy]
    [2017-03-08T14:23:04,575][INFO ][o.e.p.PluginsService ] [JotwXSM] loaded module [lang-mustache]
    [2017-03-08T14:23:04,575][INFO ][o.e.p.PluginsService ] [JotwXSM] loaded module [lang-painless]
    [2017-03-08T14:23:04,575][INFO ][o.e.p.PluginsService ] [JotwXSM] loaded module [percolator]
    [2017-03-08T14:23:04,575][INFO ][o.e.p.PluginsService ] [JotwXSM] loaded module [reindex]
    [2017-03-08T14:23:04,575][INFO ][o.e.p.PluginsService ] [JotwXSM] loaded module [transport-netty3]
    [2017-03-08T14:23:04,575][INFO ][o.e.p.PluginsService ] [JotwXSM] loaded module [transport-netty4]
    [2017-03-08T14:23:04,575][INFO ][o.e.p.PluginsService ] [JotwXSM] no plugins loaded
    [2017-03-08T14:23:07,038][INFO ][o.e.n.Node ] initialized
    [2017-03-08T14:23:07,038][INFO ][o.e.n.Node ] [JotwXSM] starting ...
    [2017-03-08T14:23:07,076][INFO ][i.n.u.i.PlatformDependent] Your platform does not provide complete low-level API for accessing direct buffers reliably. Unless explicitly requested, heap buffer will always be preferred to avoid potential system unstability.
    [2017-03-08T14:23:07,213][INFO ][o.e.t.TransportService ] [JotwXSM] publish_address {127.0.0.1:9300}, bound_addresses {[fe80::1]:9300}, {[::1]:9300}, {127.0.0.1:9300}
    [2017-03-08T14:23:07,221][WARN ][o.e.b.BootstrapChecks ] [JotwXSM] initial heap size [268435456] not equal to maximum heap size [4294967296]; this can cause resize pauses and prevents mlockall from locking the entire heap
    [2017-03-08T14:23:10,287][INFO ][o.e.c.s.ClusterService ] [JotwXSM] new_master {JotwXSM}{JotwXSM9TR23cYhO1CstiQ}{otfcgw_KR1eU81nblu5T9w}{127.0.0.1}{127.0.0.1:9300}, reason: zen-disco-elected-as-master ([0] nodes joined)
    [2017-03-08T14:23:10,307][INFO ][o.e.h.HttpServer ] [JotwXSM] publish_address {127.0.0.1:9200}, bound_addresses {[fe80::1]:9200}, {[::1]:9200}, {127.0.0.1:9200}
    [2017-03-08T14:23:10,308][INFO ][o.e.n.Node ] [JotwXSM] started
    [2017-03-08T14:23:10,313][INFO ][o.e.g.GatewayService ] [JotwXSM] recovered [0] indices into cluster_state
    </pre>

    启动异常: java.lang.RuntimeException: can not run elasticsearch as root(注:ES有进行脚本的力量,因安全因素,无法在root顾客下运转,)
    减轻方案:创设叁个es顾客,使用 es顾客运维
    [root@localhost bin]# groupadd es
    [root@localhost bin]# useradd es -g es -p 111111
    [root@localhost bin]# chown -R es:es /usr/local/elasticsearch6.1/
    [root@localhost bin]# su es
    [es@localhost bin]$ ./elasticsearch -d
    [es@localhost bin]$ ps -ef|grep java
    es 1800 1 86 21:47 pts/0 00:00:11 /usr/local/jdk1.8/bin/java -Xms1g -Xmx1g -XX: UseConcMarkSweepGC -XX:CMSInitiatingOccupancyFraction=75 -XX: UseCMSInitiatingOccupancyOnly -XX: AlwaysPreTouch -server -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 -Dlog4j.shutdownHookEnabled=false -Dlog4j2.disable.jmx=true -XX: HeapDumpOnOutOfMemoryError -Des.path.home=/usr/local/elasticsearch6.1 -Des.path.conf=/usr/local/elasticsearch6.1/config -cp /usr/local/elasticsearch6.1/lib/* org.elasticsearch.bootstrap.Elasticsearch -d
    es 1820 1760 0 21:47 pts/0 00:00:00 grep java

    集群(Cluster)

    八个集群富含一个或四个节点(node),用来保存全体数据,并且那一个节点联合提供索引和查找技艺。集群使用独一名称实行不一样集群间的分歧,暗中认可名称是”elasticsearch”。集群的名号比较重要,因为一个节点假如要参与到二个集群中,要求设置节点的集群名称。
    在实质上选择中,需求保障您的不等情状,所运用的称谓是例外的,不然会形成节点参加到其余集群情形中。比方你能够运用:logging-dev、logging-stage、logging-prod分别用来搭建开辟、过渡、生产境遇。
    集群能够唯有多个节点,那么些集群也能健康提供职业力量。其它,也得以搭建三个Elasticsearch集群,通过集群名称区分。

      

    2、node.name

    现阶段节点名称,暗中认可会轻便自动内定二个称号,能够修改此称呼作为当下节点的名目

    :::* LISTEN 1800/java

    节点(Node)

    在集群中三个节点是四个独门的服务,用来囤积数据,为集群的目录和寻觅提供技艺。集群中的节点,也是有独一标记的,暗许在节点运行的时候会轻便钦赐叁个UUID(Universally Unique IDentifiter)。假诺不采用暗许名称,可感觉其钦赐多个称谓。节点名称对于集群管理也是很关键的。
    三个节点要参预到内定集群,须要为节点内定集群名称。暗许情状下,每种节点都安装集群名为”elasticsearch”,所以当在同等互连网境况中,暗许运行一些节点,那么些节点会组装成三个名叫elasticsearch集群。

    一:从nuget下载

    3、bootstrap.memory_lock

    建立集群时,须求将锁定内部存款和储蓄器成效关闭。

    此参数设置为true时,用于锁住内部存储器。因为当jvm起先swapping时es的频率会骤降,所以要确定保证它不swap,能够把ES_MIN_MEM和ES_MAX_MEM四个遭遇变量设置成同三个值,並且保险机器有丰盛的内部存款和储蓄器分配给es。

    再就是也要允许elasticsearch的进度能够锁住内部存款和储蓄器,linux下能够透过`ulimit -l unlimited`命令。

    二、查看是不是运转成功

    索引(Index)

    四个索引包括众多风味临近的文书档案。举例,有一个索引用来索援顾客数据,另一个索援引来索引产品目录,另外的目录可以索引其余数据。三个目录需求内定一个名号(必需一切大写),实施索引、搜索、修改和删除操作,供给钦赐相应的目录名称。
    在一个集群中,你能够成立四个目录。

        nuget下来的都以开箱可用,假若看源码的话能够在github上找一下log4net.ElasticSearch项目。。

    4、discovery.zen.ping.unicast.hosts

    安装集群中master节点的起首列表,能够因而那几个节点来机关开掘新参与集群的节点格式为:

    discovery.zen.ping.unicast.hosts: ["host1", "host2:port", "host3[portX-portY]"]

    翻最早口是或不是开启:
    [root@localhost config]# netstat -nalp|grep 9200
    tcp 0 0 ::ffff:127.0.0.1:9200 :::* LISTEN 1800/java
    tcp 0 0 ::1:9200

    类型(Type)

    在八个目录中,能够定义三个连串。一个体系能够管理索引中符合一定逻辑的一有个别数据。一般的话,类型定义具备公共字段的文书档案。比方你想创立叁个博客平台,而且动用三个目录存款和储蓄全部数据。在那一个目录中,你能够定义一个品种用来存款和储蓄客商数据,另二个品种用来积攒博客数据,还足以创设多个等级次序用来囤积钻探。

    新葡亰496net 6

    5、discovery.zen.minimum_master_nodes

    设置那一个参数来确定保证集群中的节点能够知晓其余N个有master资格的节点。默感到1(推荐),对于大的集群来讲,能够安装大学一年级点的值(2-4),对于三五台节点的集群,必须设为1 。

    [root@localhost bin]# curl -v curl模拟http请求

    文档(Documeng)

    文书档案是力所能致被索引的基础单元。比如一个文书档案存款和储蓄贰个客户音信,另贰个文书档案存款和储蓄叁个成品消息。Elasticsearch文书档案使用JSON(JavaScript Object Notation)来显示多少。
    在多个索引/文档中得以积存比较多文书档案。供给小心,固然四个文书档案在物理存款和储蓄上是积存在一个索引中的,但文书档案必得被索引或分配给索引的项目中。

     

    3、质量调优


    透过安插每一个终极节点的布署文件“/config/elasticsearch.yml”,能够兑现ES境遇的属性升高。

    三、设置外网访谈
    vim conf/elasticsearch.yml
    修改:network.host: 0.0.0.0

    分片(Shard)&副本(Replicas)

    在骨子里运用中大概存在这么的气象,五个索引存款和储蓄超越了三个节点的情理存款和储蓄本事。比如三个目录有十亿的文书档案,超越了1TB的蕴藏,在单个节点不也许完全存款和储蓄,并且对于单个节点的物色哀告是丰裕慢的。
    为了减轻这一个主题素材,Elasticsearch提供了为索引切分成多个分片(Shard)的技能,当你成立贰个目录的时候,你可见定义索引被细分成多少个shard。每一个shard都是效果与利益完全,能够独立索引的,能够分配到集群中另外四个节点中。

    使用分片有五个基本点原由:

    • 同意水平划分文书档案,分布存款和储蓄。
    • 同意你分配何况实践分片,在多少个节点中能够提供查询质量和吞吐量。

    shard怎么样布满,当三个呼吁发来后怎么样协会数量,这么些对于顾客来说都以晶莹剔透的。
    当在三个互连网遇到中,有不小恐怕有些节点或分片错过。Elasticsearch提供了一种针对这种故障转移的效应,便是别本。Elasticsearch允许你为三个分片创立贰个或多少个别本。分片和别本又称为主/副分片。

    应用别本有八个重大原由:

    • 当一个节点或分片错失后,能够三番四遍应用。由此,须要留意的是主/副分片不会积攒在贰个节点中。
    • 当举办搜寻的时候,允许搜索全部的别本,所以抓牢了搜寻品质。

    就此四个目录能够分割成多少个shard,一个索引能够得以有零个或多个别本。每一个索引都有主分片(索引切割后的分片,又称本来分片)和别本分片(从原来分片复制过来的)。分片数量和别本数量在开立索引的时候能够被内定,当索引创建后,可以钦命更动别本数量,然而无法改动分片数量。私下认可情形下每种索引在Elasticsearch有5个分片和1个别本,相当于说总共12个shard(别本是对分片来讲的,各类shard又一个别本)。每三个shard内部都以叁个Lucene索引实例,单个lucene索引最多能够存款和储蓄2,147,483,519(Integer.MAX_value-128)个文档。

    1. App.config配置

    3.1、路径配置


    1、path.data

    path.data:/path/to/data

    设置索引数据的存款和储蓄路线,暗许是es根目录下的data文件夹,能够安装四个存款和储蓄路径,用逗号隔离,例:path.data:/path/to/data1,/path/to/data2

     

    Elasticserach层级

    精通Elasticsearch中索引、类型、文书档案、域(字段)可以和关系型数据库做个大约的相比:

    • Relation DB: database->table->row->column
    • Elasticsearch:index->type->document->field

      nuget包下来之后,就能够配备config文件了,其实照旧蛮轻易的,大家能够依靠自个儿的类型合理的布署内部的各种参数,为了有助于大家掌握,我在各种配置

    2、path.logs

    path.logs:/path/to/logs

    安装日志文件的储存路线,暗中认可是es根目录下的logs文件夹

    再度运转elasticsearch 大概出现一般来讲类似错误
    1、bootstrap checks failed
    max file descriptors [65535] for elasticsearch process is too low, increase to at least [65536]

    Elasticsearch安装(5.2.0)

    项上加了详细的笺注,我们可以留意看看。

    3、path.conf

    path.conf: /path/to/conf

    安装配置文件的蕴藏路线,暗中同意是es根目录下的config文件夹。

    切换到root用户
    vi /etc/security/limits.conf
    添加:
    * soft nofile 65536
    * hard nofile 131072
    * soft nproc 2048
    * hard nproc 4096

    jdk安装

    Elasticsearch安装前须要安装jdk,版本最低是1.8,因为ES源码中非常多行使了lambda表明式等jdk8的语法。

    <?xml version="1.0" encoding="utf-8" ?>
    <configuration>
        <configSections>
            <section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler, log4net" />
        </configSections>
        <log4net>
            <!-- 日志的处理类:log4net.ElasticSearch.ElasticSearchAppender -->
            <appender name="ElasticSearchAppender" type="log4net.ElasticSearch.ElasticSearchAppender, log4net.ElasticSearch">
    
                <!-- ES地址  rolling=true:表示每天一个index(datamipcrm_log_2018.05.31)  -->
                <connectionString value="Scheme=http;Server=192.168.23.145;Index=datamiprm_log;Port=9200;rolling=true"/>
                <!-- 有损配置: 如果配置的buffer满了还没来的及刷新到es中,那么新来的log将会被丢弃。 -->
                <lossy value="false" />
                <evaluator type="log4net.Core.LevelEvaluator">
                    <!--
                        表示 小于ERROR级别的日志会进入buffer数组,大于等于这个级别的,直接提交给es。
                        通常情况下,ERROR级别的错误,我们直接塞到ES中,这样更有利于我们发现问题。 DEBUG,INFO WARN ERROR -->
                    <threshold value="ERROR" />
                </evaluator>
    
                <!-- buffer池的阈值50,一旦满了就会触发flush 到 es的动作(bulk api) -->
                <bufferSize value="50" />
            </appender>
            <root>
                <!-- 指定所有的loglevel(DEBUG,INFO,WARN,ERROR)级别都是用 ElasticSearchAppender 处理 -->
                <level value="ALL"/>
                <appender-ref ref="ElasticSearchAppender" />
            </root>
        </log4net>
        <startup>
            <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.6.1" />
        </startup>
    </configuration>
    

    4、path.work

    path.work: /path/to/work

    安装有的时候文件的寄存路线,默许是es根目录下的work文件夹。

     

    下载Elasticsearch

    https://www.elastic.co/downloads/elasticsearch

     

    5、path.plugins

    path.plugins: /path/to/plugins

    安装插件的寄存路线,暗中同意是es根目录下的plugins文件夹

    vi /etc/security/limits.d/90-nproc.conf

    解压包

    tar -zxvf elasticsearch-5.2.0.tar.gz
    进去解压文件
    cd elasticsearch-5.2.0/bin

      上边有几点要特别注意一下:

    3.2、节点配置


    1、node.master

    node.master: true

    点名该节点是不是有资格被大选成为node,默许是true,es是暗许集群中的第一台机械为master,要是那台机挂了就能够再也大选master。

    修改
    * soft nproc 1024
    #修改为
    * soft nproc 2048

    启动ES

    ./elasticsearch
    <pre>
    2017-02-28T21:54:27,648][INFO ][o.e.n.Node ] [] initializing ...
    [2017-02-28T21:54:27,736][INFO ][o.e.e.NodeEnvironment ] [fkHgUS8] using [1] data paths, mounts [[/ (/dev/disk1)]], net usable_space [117.6gb], net total_space [177.8gb], spins? [unknown], types [hfs]
    [2017-02-28T21:54:27,736][INFO ][o.e.e.NodeEnvironment ] [fkHgUS8] heap size [1.9gb], compressed ordinary object pointers [true]
    [2017-02-28T21:54:27,737][INFO ][o.e.n.Node ] node name [fkHgUS8] derived from node ID [fkHgUS8UTBOOYxQ4LaPYQg]; set [node.name] to override
    [2017-02-28T21:54:27,739][INFO ][o.e.n.Node ] version[5.2.0], pid[4855], build[24e05b9/2017-01-24T19:52:35.800Z], OS[Mac OS X/10.11.6/x86_64], JVM[Oracle Corporation/Java HotSpot(TM) 64-Bit Server VM/1.8.0_91/25.91-b14]
    [2017-02-28T21:54:28,453][INFO ][o.e.p.PluginsService ] [fkHgUS8] loaded module [aggs-matrix-stats]
    [2017-02-28T21:54:28,453][INFO ][o.e.p.PluginsService ] [fkHgUS8] loaded module [ingest-common]
    [2017-02-28T21:54:28,454][INFO ][o.e.p.PluginsService ] [fkHgUS8] loaded module [lang-expression]
    [2017-02-28T21:54:28,454][INFO ][o.e.p.PluginsService ] [fkHgUS8] loaded module [lang-groovy]
    [2017-02-28T21:54:28,454][INFO ][o.e.p.PluginsService ] [fkHgUS8] loaded module [lang-mustache]
    [2017-02-28T21:54:28,454][INFO ][o.e.p.PluginsService ] [fkHgUS8] loaded module [lang-painless]
    [2017-02-28T21:54:28,454][INFO ][o.e.p.PluginsService ] [fkHgUS8] loaded module [percolator]
    [2017-02-28T21:54:28,454][INFO ][o.e.p.PluginsService ] [fkHgUS8] loaded module [reindex]
    [2017-02-28T21:54:28,454][INFO ][o.e.p.PluginsService ] [fkHgUS8] loaded module [transport-netty3]
    [2017-02-28T21:54:28,454][INFO ][o.e.p.PluginsService ] [fkHgUS8] loaded module [transport-netty4]
    [2017-02-28T21:54:28,455][INFO ][o.e.p.PluginsService ] [fkHgUS8] no plugins loaded
    [2017-02-28T21:54:30,225][INFO ][o.e.n.Node ] initialized
    [2017-02-28T21:54:30,225][INFO ][o.e.n.Node ] [fkHgUS8] starting ...
    [2017-02-28T21:54:30,420][INFO ][o.e.t.TransportService ] [fkHgUS8] publish_address {127.0.0.1:9300}, bound_addresses {[fe80::1]:9300}, {[::1]:9300}, {127.0.0.1:9300}
    [2017-02-28T21:54:33,477][INFO ][o.e.c.s.ClusterService ] [fkHgUS8] new_master {fkHgUS8}{fkHgUS8UTBOOYxQ4LaPYQg}{XitBFBRHSYKtMEA-VwIBgw}{127.0.0.1}{127.0.0.1:9300}, reason: zen-disco-elected-as-master ([0] nodes joined)
    [2017-02-28T21:54:33,495][INFO ][o.e.h.HttpServer ] [fkHgUS8] publish_address {127.0.0.1:9200}, bound_addresses {[fe80::1]:9200}, {[::1]:9200}, {127.0.0.1:9200}
    [2017-02-28T21:54:33,496][INFO ][o.e.n.Node ] [fkHgUS8] started
    [2017-02-28T21:54:33,500][INFO ][o.e.g.GatewayService ] [fkHgUS8] recovered [0] indices into cluster_state
    </pre>

    从运行新闻种能够观望节点名叫fkHgUS8,由于是单节点,所以自个儿便是master,使用端口9200用作REST API访谈端口。大家得以透过命令行为其钦赐集群名称和节点名称:
    ./elasticsearch -Ecluster.name=es_cluster -Enode.name=node01

    《1》 bufferSize

    2、node.data

    node.data: true

    钦定该节点是或不是存款和储蓄索引数据,暗许为true。

     

    搜求集群

    地方大家把elasticsearch集群运行起来了(纵然独有三个节点),接下去你应有试着与那几个集群开展通讯。Elasticsearch提供了那么些健全和强劲的REST API来与集群通讯。通过这一个API你能够:

    • 反省集群、节点、索引健康、状态和总结
    • 管制集群、节点、索引数据和元数据音信
    • 执行CRUD操作
    • 实践高档的搜求操作,例如分页(paging)、排序(sorting)、脚本(scripting)、聚合(aggregations)和任何操作

               那些大家精通成缓存区,方便批量交到到es中,不然的话,过于频仍的和es进行互相,对带宽,对application,es都以非常的大的压力。

    3.3、分片配置


    1、index.number_of_shards

    index.number_of_shards: 5

    设置暗许索引分片个数,暗中认可为5片。

    vi /etc/sysctl.conf

    Elasticsearch交互

    Elasticsearch提供了三种交互方式:java顾客端(java api)和http公约(rest api)

    1. java api
      节点客商端(node client):节点客商端到场集群,可是并不存储数据,但知道数据再集群的具体地点,并且能够转载呼吁到对应节点上。
      传输顾客端(Transport client):节点本人不投入集群,只简轻便单发送诉求给集群中的节点,那些更轻量。
      两个客商端都以通过9300端口举行拜访,并应用Elasticsearch传输合同进行通讯(ETP:Elasticsearch Transport Protocol),集群节点间也是接纳9300端口举办通讯。
    2. 基于http协议
      基于HTTP合同,以JSON为多少交互格式的RESTful API,非java语言能够使用RESTful API方式与ES进行互动,使用9200端口。
      伸手格式:
      curl -X<VERB> '<PROTOCOL>://<HOST>:<PORT>/<PATH>?<QUERY_STRING> ‘ -d <BODY>
      VERB:HTTP方法,GET、POST、PUT、HEAD、DELETE
      PROTOCOL:http协议或https协议
      HOST:乞请的节点主机
      PORT:端口号,默认9200
      PATH:伏乞路线
      QUERY_STENVISIONING:可选央浼参数
      BODY:JSON方式呼吁的宗旨
      example:curl -XGET http://localhost:9200/_count
      得到响应大旨,如若要乞请头,在-XGET前加-i获取

    《2》 <threshold value="ERROR" /> 

    2、index.number_of_replicas

    index.number_of_replicas: 1

    安装暗许索引别本个数,默认为1个别本。

    拉长上边配置:
    vm.max_map_count=655360
    并试行命令:sysctl -p

    集群健康

    集群健检,这里会用到_cat语法:
    curl http://127.0.0.1:9200/_cat/health?v

    新葡亰496net 7

    集群状态

    从结果可以见到,集群名叫elasticsearch,集群状态为红棕(green)。
    集群状态分为翠绿(green)、浅紫(yellow)和革命(red)。

    • 木色代表集群当前情状是好的(集群功能齐全)。
    • 罗曼蒂克代表全数数据(主分片)都可用,然则有的别本(副分片)还向来不分配(集群功效齐全)。
    • 辛丑革命表示有个别数码(主分片)不可用。

    亟待小心的是,固然集群是辛酉革命的,它依旧有个别功用可用。譬喻:可用的shard能够继续为寻找提供劳务。但是你应该尽早去消除您错过的数额。
    从地点的音信来看,我们就有多少个节点(node),况且能够看出有0个shard,那是因为大家还未曾导入数据。要求小心一点,我们运转Elasticsearch使用暗许名称elasticsearch。由于Elasticsearch默许选择单播网络去发掘任何节点,所以假若你运维了四个Elasticsearch实例,则会自动步向那几个称呼为”elasticsearch”的集群。

    能够应用curl http://127.0.0.1:9200/_cat/nodes?v 查看node节点列表

    新葡亰496net 8

    node节点状态

    收获具备索引列表
    curl http://127.0.0.1:9200/_cat/indices?v

    新葡亰496net 9

    目录列表

    会发觉并未有别的索引纪录,因为大家集群还不曾开创任何索引;
    开创索引
    curl -XPUT http://127.0.0.1:9200/customer

    新葡亰496net 10

    加多索引

    下一场在查阅索引
    curl http://127.0.0.1:9200/_cat?indices?v

    新葡亰496net 11

    目录列表

    能够看看后天例行状态为yello,此前大家说过yello表明当前副本并未有分配,因为我们唯有二个节点,而别本不会和主分片在一台机器上的,所以当增加节点(node)后,副本分片被分配后集群苏醒green。还能看到有多个目录名称叫customer的目录,有5个主分片(pri)和1个副本分片(rep), 0个文书档案,删除过0个文书档案,存款和储蓄大小,主分片存款和储蓄大小。

              有的时候候我们有诸有此类的需要,小编盼望E智跑ROEnclave,Fault这种级其他一无所长不要走buffer,直接付出给es,那样更便于让初创企业意识标题,找到标题,恭喜你,

    3.4、网络布局


    2、system call filters failed to install; check the logs and fix your configuration or disable system call filters at your own risk

    目录操作

              上边这些布局就是减轻那些事的。

    1、network.bind_host

    network.bind_host: 192.168.0.1

    设置绑定的ip地址,能够是ipv4或ipv6的,默以为0.0.0.0。

    在elasticsearch.yml中配置bootstrap.system_call_filter为false,注意要在Memory下边:
    bootstrap.memory_lock: false
    bootstrap.system_call_filter: false

    目录文书档案

    目录文书档案,须要为其钦赐项目,也得以为其手动钦赐id(如若不点名,Elasticsearch随机提供贰个id)
    curL -XPUT http://127.0.0.1:9200/customer/external/1?pretty -d '{"name":"yjz”}’
    pretty参数是指格式化重回结果
    回到结果:
    <pre>
    {
    "_index" : "customer",
    "_type" : "external",
    "_id" : "2",
    "_version" : 1,
    "result" : "created",
    "_shards" : {
    "total" : 2,
    "successful" : 1,
    "failed" : 0
    },
    "created" : true
    }
    </pre>

    急需小心的是,elasticsearch无需您在索引文书档案前提早创立索引恐怕项目。当你索引文书档案时候,尽管发掘索引不设有,则会自动创制。

     

    2、network.publish_host

    network.publish_host: 192.168.0.1

    安装任何节点和该节点交互的ip地址,要是不安装它会自行决断,值必得是个忠实的ip地址。

    四、 访问地址

    获得索引

    curL -XGET http://127.0.0.1:9200/customer/external/2?pretty
    <pre>
    {
    "_index" : "customer",
    "_type" : "external",
    "_id" : "2",
    "_version" : 1,
    "found" : true,
    "_source" : {
    "name" : "Jok"
    }
    }
    </pre>

    可以察觉已经找到该索引,_source字段是指索引时候的完好文书档案。

    1. 在AssemblyInfo中追加如下配置。

      // 能够钦命全体值,也能够采用以下所示的 "" 预置版本号和修订号 // 方法是按如下所示使用“”: : // [assembly: AssemblyVersion("1.0.*")] [assembly: AssemblyVersion("1.0.0.0")] [assembly: AssemblyFileVersion("1.0.0.0")] [assembly: log4net.Config.XmlConfigurator(Watch = true)]

    3、network.host

    network.host: 192.168.0.1

    其一参数是用来还要设置bind_host和publish_host下面八个参数。

    五、el的目录结构:

    删去索引

    curl -XDELETE http://127.0.0.1:9200/customer/external/2?pretty
    <pre>
    {
    "found" : true,
    "_index" : "customer",
    "_type" : "external",
    "_id" : "2",
    "_version" : 2,
    "result" : "deleted",
    "_shards" : {
    "total" : 2,
    "successful" : 1,
    "failed" : 0
    }
    }
    </pre>

     

    4、transport.tcp.port

    transport.tcp.port: 9300

    安装节点间相互的tcp端口,暗中认可是9300。

     新葡亰496net 12

    修改文书档案

    Elasticsearch表面上支撑文书档案的修改,其实底层是将旧的目录删除,然后重新索引三个新的文书档案,来落到实处修改作用。
    curl -XPOST http://127.0.0.1:9200/customer/external/1?pretty -d '{"name":"Mark”}’
    归来结果:
    <pre>
    {
    "_index" : "customer",
    "_type" : "external",
    "_id" : "1",
    "_version" : 2,
    "result" : "updated",
    "_shards" : {
    "total" : 2,
    "successful" : 1,
    "failed" : 0
    },
    "created" : false
    }
    </pre>

    1. 接下来就能够写一段测验代码啦。

      namespace ConsoleApp1 {

       class Program
       {
           private static readonly ILog _log = LogManager.GetLogger(typeof(Program));
      
           static void Main(string[] args)
           {
      
              for (int i = 0; i < 1000; i  )
               {
                   try
                   {
                       var m = "1";
      
                       var result = 100 / Convert.ToInt32(m);
                       _log.Info("我要开始记录日志啦");
      
                   }
                   catch (Exception ex)
                   {
                       _log.Error("调用失败"   i, ex);
                       //_log.Info("调用失败"   i, ex);
                       //Console.WriteLine(i);
                   }
               }
      
               Console.Read();
           }
      
       }
      

      }

    5、transport.tcp.compress

    transport.tcp.compress: true

    安装是或不是压缩tcp传输时的数据,默认为false,不收缩。

     

    批量操作

    Elasticsearch提供了批量操作api(_bulk),来相当慢到位index、update、delete操作。批量操作能够将操作写在八个文书中,然后在实践命令的时候内定文件。
    curl -XPOST 'http://10.4.237.77:9200/_bulk?pretty' --data-binary @esbatch.json
    esbatch.json文件内容:
    <pre>
    {"index":{"_index":"blog","_type":"article","_id":1}}
    {"title":"java is first","conent":"java is verry nice"}
    {"create":{"_index":"blog","_type":"article","_id":2}}
    {"title":"elasticsearch","content":"elasticsearch study"}
    {"create":{"_index":"blog","_type":"article","_id":2}}
    {"title":"elasticsearchV2","conent":"elasticsearchV2"}
    {"delete":{"_index":"blog","_type":"article","_id":4}}
    {"delete":{"_index":"blog","_type":"article","_id":1}}
    </pre>

    批量操作不会因为多少个操作活动(action)失利而停业,若是批量操作中有一条纪录之行退步,则批量操作还有可能会继续实行。批量操作会为种种试行活动回到三个履涨势况,以便检查是不是实施成功。

     

    6、http.port

    http.port: 9200

    安装对外服务的http端口,暗中同意为9200。

    搜索

    招来能够动用两种艺术:REST request UEnclaveI和REST request BODY,一些简练搜索能够选用ULX570I,而对此一些头晕目眩的查找能够使用request body。
    curl -XGET http://127.0.0.1:9200/customer/_search?q=mark&sort=name:asc&pretty
    回来结果:
    <pre>
    {
    "took" : 1,
    "timed_out" : false,
    "_shards" : {
    "total" : 5,
    "successful" : 5,
    "failed" : 0
    },
    "hits" : {
    "total" : 1,
    "max_score" : 1.0,
    "hits" : [
    {
    "_index" : "customer",
    "_type" : "external",
    "_id" : "1",
    "_score" : 1.0,
    "_source" : {
    "name" : "Mark"
    }
    }
    ]
    }
    }
    </pre>
    回到表达:
    took:Elasticsearch实行找寻微秒数
    time_out:查询是不是过期
    _shards:告诉我们探寻了不怎么个shard,成功多少,战败多少。
    hits:寻找结果
    hits.total:总共多少个文书档案符合大家的追寻条件
    hits.max_score:相配最大的分
    hits.hits:实际寻找结果数据(暗中认可重临前十条)
    Elasticsearch提供了JSON风格的domain-specific-language(DSL:领域特定语言)推行查询,这种查询语言是一定完善的。例如:
    curl -XGET http://127.0.0.1:9200/customer/_search?pretty -d '{"query":{"match_all":{}}}’,由于应用curl所以json串望着不和谐
    若是利用kibana或head,使用依旧很有好的:
    <pre>
    GET /customer/_search
    {
    “query”:{“match_all”:{}},
    “from”:10,
    “size”:10,
    “sort”:{“balance”:{“order”:”desc"}}
    }
    </pre>
    万一想回到部分字段能够采取_source字段:
    <pre>
    GET /customer/_search
    {
    “query”:{“match_all”:{}},
    “_source”:[“xxxx”,”xxxx"]
    }
    </pre>
    地点都以match_all整体郎才女貌重回,能够钦点相称原则,上面这几个相配包涵hello或word的文档。
    <pre>
    GET /customer/_search
    {
    “query”:{“match”:{“name”,”hello word"}}
    }
    </pre>
    也得以协作短语,就是包含hello word短语的文书档案,不进行拆词。
    <pre>
    GET /customer/_search
    {
    “query”:{“match_phrase”:{“name”,”hello word"}}
    }
    </pre>

    然后经过elasticsearch-head 插件实行查看,各样数码就都在es中了。

    7、http.max_content_length

    http.max_content_length: 100mb

    安装剧情的最大体积,暗中认可100mb

    布尔查询

    布尔查询能够多规格至极,能够做到and、or、not组合条件查询。

    • 查询and操作,通过must调节,须要满意全体查询条件。

    <pre>
    GET /customer/_search
    {
    “query”:{
    “must”:[
    {“match”:{“name”:”hello”}},
    {“match”:{“name”:”world"}}
    ]
    }
    }
    </pre>

    • 询问or操作,通过should调控,只需满意部分查询条件。

    <pre>
    GET /customer/_search
    {
    “query”:{
    “should”:[
    {“match”:{“name”:”hello”}},
    {“match”:{“name”:”world"}}
    ]
    }
    }
    </pre>

    • 查询not操作,通过must_not调控,重返不带有条件列表的文书档案。

    <pre>
    GET /customer/_search
    {
    “query”:{
    “must_not”:[
    {“match”:{“name”:”hello”}},
    {“match”:{“name”:”world"}}
    ]
    }
    }
    </pre>

    • 整合查询条件

    <pre>
    GET /customer/_search
    {
    “query”:{
    “must”:[
    {“match”:{“name”:”hello”}}
    ],
    “must_not”:[
    {“match”:{“name”:”world"}}
    ]
    }
    }
    </pre>

    新葡亰496net 13

    8、http.enabled

    http.enabled: false

    是否接纳http公约对外提供劳动,默以为true,开启。

    过滤条件

    比方range范围相配
    <pre>
    GET /customer/_search
    {
    “query”:{
    “must_not”:[
    {“match”:{“name”:”hello”}},
    {“match”:{“name”:”world"}}
    ],
    “filter”:{
    “range”:{
    “balance”:{
    “gte”:50,
    “lte”:60
    }
    }
    }
    }
    }
    </pre>

     

    3.5、网关配置


    1、gateway.type

    gateway.type: local

    gateway的项目,默认为local即为当和姑件系统,可以设置为本土文件系统,布满式文件系统,hadoop的HDFS,和amazon的s3服务器,其余文件系统的装置情势后一次再详尽说。

    集结查询

    集合能够将数据分组和总计,Elasticsearch提供了聚众操作,聚合操作看似SQL中的group by语句。比方重回姓名同样的前10个(暗中同意再次回到十个)
    <pre>
    GET /customer/_search
    {
    “size”:0,
    “aggs”:{
    “group_by_state”:{
    “terms”:{
    “field”:”name"
    }
    }
    }
    }
    </pre>

    Elasticsearch提供了近实时的多寡调控和搜索技艺。暗中同意情况下从目录、修改、删除到找出现身在你结果中有1分钟的延期,那是和任何平台二个异常的大的界别,比如SQL数据操作完,立马可(英文名:mǎ kě)见。

    二:elasticsearch-header 插件

    2、gateway.recover_after_nodes

    gateway.recover_after_nodes: 1

    设置集群中N个节点运营时进行数据恢复生机,暗许为1。

      关于那些插件的下载,因为google官方网址被遮挡,我们即便有VPN的话,能够活动在chrome市廛寻觅,当然也足以直接下载笔者的zip包,elasticsearch-head。

    3、gateway.recover_after_time

    gateway.recover_after_time: 5m

    设置开始化数据苏醒进度的逾期时间,暗中同意是5分钟。

    在浏览器中加载插件的时候选取0.1.3.0 文件夹就能够

    4、gateway.expected_nodes

    gateway.expected_nodes: 2

    设置那个集群中节点的数目,默感觉2,一旦这N个节点运转,就能够马上开展数据复苏。

    新葡亰496net 14

    3.6、数据苏醒配置


    1、cluster.routing.allocation.node_initial_primaries_recoveries

    cluster.routing.allocation.node_initial_primaries_recoveries: 4

    初始化数据苏醒时,并发过来线程的个数,默以为4。

     

    2、cluster.routing.allocation.node_concurrent_recoveries

    cluster.routing.allocation.node_concurrent_recoveries: 2

    加多删减节点或负载均衡时出现苏醒线程的个数,暗中同意为4。

    姣好之后点击右上边包车型大巴 “放大镜“ 开关就能够见到你想看看的UI了。

    3、indices.recovery.max_size_per_sec

    indices.recovery.max_size_per_sec: 0

    设置数据恢复生机时界定的带宽,如入100mb,默感到0,即无界定。

    新葡亰496net 15

    4、indices.recovery.concurrent_streams

    indices.recovery.concurrent_streams: 5

    设置那些参数来界定从别的分片苏醒数据时最大况且开拓并发流的个数,默以为5。

     

    3.7、节点开采配置


    1、discovery.zen.ping.timeout

    discovery.zen.ping.timeout: 3s

    安装集群中自动开掘其他节点时ping连接超时时间,默感觉3秒,对于相当差的网络蒙受能够高点的值来防卫自动开掘时出错。

    三:下载elasticsearch

    2、discovery.zen.ping.multicast.enabled

    discovery.zen.ping.multicast.enabled: false

    安装是或不是展开多播开掘节点,暗中同意是true。

      那是三个基于luncene的分布式搜索框架,用起来依旧挺顺手的,你能够下载5.6.4本子。

    3.8、慢查询配置


    上面是有个别查询时的慢日志参数设置:

    index.search.slowlog.level: TRACE

    index.search.slowlog.threshold.query.warn: 10s

    index.search.slowlog.threshold.query.info: 5s

    index.search.slowlog.threshold.query.debug: 2s

    index.search.slowlog.threshold.query.trace: 500ms

    index.search.slowlog.threshold.fetch.warn: 1s

    index.search.slowlog.threshold.fetch.info: 800ms

    index.search.slowlog.threshold.fetch.debug:500ms

    index.search.slowlog.threshold.fetch.trace: 200ms

    [elsearch@localhost myapp]$ ls
    elasticsearch-5.6.4.tar.gz  
    

     

      一般的话,安装的经过中您大概会遇见3个坑。

     

    1.  不可能用root账号登陆

      [root@localhost bin]# ./elasticsearch [2018-05-31T04:01:59,402][WARN ][o.e.b.ElasticsearchUncaughtExceptionHandler] [] uncaught exception in thread [main] org.elasticsearch.bootstrap.StartupException: java.lang.RuntimeException: can not run elasticsearch as root

       at org.elasticsearch.bootstrap.Elasticsearch.init(Elasticsearch.java:136) ~[elasticsearch-5.6.4.jar:5.6.4]
       at org.elasticsearch.bootstrap.Elasticsearch.execute(Elasticsearch.java:123) ~[elasticsearch-5.6.4.jar:5.6.4]
       at org.elasticsearch.cli.EnvironmentAwareCommand.execute(EnvironmentAwareCommand.java:70) ~[elasticsearch-5.6.4.jar:5.6.4]
       at org.elasticsearch.cli.Command.mainWithoutErrorHandling(Command.java:134) ~[elasticsearch-5.6.4.jar:5.6.4]
       at org.elasticsearch.cli.Command.main(Command.java:90) ~[elasticsearch-5.6.4.jar:5.6.4]
       at org.elasticsearch.bootstrap.Elasticsearch.main(Elasticsearch.java:91) ~[elasticsearch-5.6.4.jar:5.6.4]
       at org.elasticsearch.bootstrap.Elasticsearch.main(Elasticsearch.java:84) ~[elasticsearch-5.6.4.jar:5.6.4]
      

      Caused by: java.lang.RuntimeException: can not run elasticsearch as root

       at org.elasticsearch.bootstrap.Bootstrap.initializeNatives(Bootstrap.java:106) ~[elasticsearch-5.6.4.jar:5.6.4]
       at org.elasticsearch.bootstrap.Bootstrap.setup(Bootstrap.java:195) ~[elasticsearch-5.6.4.jar:5.6.4]
       at org.elasticsearch.bootstrap.Bootstrap.init(Bootstrap.java:342) ~[elasticsearch-5.6.4.jar:5.6.4]
       at org.elasticsearch.bootstrap.Elasticsearch.init(Elasticsearch.java:132) ~[elasticsearch-5.6.4.jar:5.6.4]
       ... 6 more
      

     

            这一个轻易,扩展一个elasearch客商就能够了。

    groupadd elsearch                   #新建elsearch组
    useradd elsearch -g elsearch -p elasticsearch  #新建一个elsearch用户
    chown -R elsearch:elsearch  ./elasticsearch    #指定elasticsearch所属elsearch组
    

     

    1.  内部存款和储蓄器不足的主题素材。

      [elsearch@localhost bin]$ ./elasticsearch Java HotSpot(TM) 64-Bit Server VM warning: INFO: os::commit_memory(0x00000000a9990000, 1449590784, 0) failed; error='Cannot allocate memory' (errno=12) # # There is insufficient memory for the Java Runtime Environment to continue. # Native memory allocation (mmap) failed to map 1449590784 bytes for committing reserved memory. # An error report file with more information is saved as: # /usr/myapp/elasticsearch/bin/hs_err_pid33341

     

          那是ES暗许分配的堆内部存款和储蓄器是2g,假设现身那么些难点,一般的话是你的虚构机具有的内部存款和储蓄器小于2g,只必要在jvm.options校官2g改换1g就足以了。

    [root@localhost config]# ls
    elasticsearch.yml  jvm.options  log4j2.properties  scripts
    
    # Xms represents the initial size of total heap space
    # Xmx represents the maximum size of total heap space
    
    -Xms1g
    -Xmx1g
    

     

    1. max file descriptors 太少 和 max virtual memory 虚构内部存款和储蓄器太低。

      [elsearch@localhost bin]$ ./elasticsearch [2018-05-30T20:44:56,484][INFO ][o.e.n.Node ] [] initializing ... [2018-05-30T20:44:56,632][INFO ][o.e.e.NodeEnvironment ] [f9t2Sfl] using [1] data paths, mounts [[/ (rootfs)]], net usable_space [14.4gb], net total_space [22.1gb], spins? [unknown], types [rootfs] [2018-05-30T20:44:56,632][INFO ][o.e.e.NodeEnvironment ] [f9t2Sfl] heap size [989.8mb], compressed ordinary object pointers [true] [2018-05-30T20:44:56,634][INFO ][o.e.n.Node ] node name [f9t2Sfl] derived from node ID [f9t2SfljReiND4XeMLUbyA]; set [node.name] to override [2018-05-30T20:44:56,634][INFO ][o.e.n.Node ] version[5.6.4], pid[33546], build[8bbedf5/2017-10-31T18:55:38.105Z], OS[Linux/3.10.0-327.el7.x86_64/amd64], JVM[Oracle Corporation/Java HotSpot(TM) 64-Bit Server VM/1.8.0_144/25.144-b01] [2018-05-30T20:44:56,634][INFO ][o.e.n.Node ] JVM arguments [-Xms1g, -Xmx1g, -XX: UseConcMarkSweepGC, -XX:CMSInitiatingOccupancyFraction=75, -XX: UseCMSInitiatingOccupancyOnly, -XX: AlwaysPreTouch, -Xss1m, -Djava.awt.headless=true, -Dfile.encoding=UTF-8, -Djna.nosys=true, -Djdk.io.permissionsUseCanonicalPath=true, -Dio.netty.noUnsafe=true, -Dio.netty.noKeySetOptimization=true, -Dio.netty.recycler.maxCapacityPerThread=0, -Dlog4j.shutdownHookEnabled=false, -Dlog4j2.disable.jmx=true, -Dlog4j.skipJansi=true, -XX: HeapDumpOnOutOfMemoryError, -Des.path.home=/usr/myapp/elasticsearch] [2018-05-30T20:44:57,530][INFO ][o.e.p.PluginsService ] [f9t2Sfl] loaded module [aggs-matrix-stats] [2018-05-30T20:44:57,530][INFO ][o.e.p.PluginsService ] [f9t2Sfl] loaded module [ingest-common] [2018-05-30T20:44:57,530][INFO ][o.e.p.PluginsService ] [f9t2Sfl] loaded module [lang-expression] [2018-05-30T20:44:57,531][INFO ][o.e.p.PluginsService ] [f9t2Sfl] loaded module [lang-groovy] [2018-05-30T20:44:57,531][INFO ][o.e.p.PluginsService ] [f9t2Sfl] loaded module [lang-mustache] [2018-05-30T20:44:57,531][INFO ][o.e.p.PluginsService ] [f9t2Sfl] loaded module [lang-painless] [2018-05-30T20:44:57,531][INFO ][o.e.p.PluginsService ] [f9t2Sfl] loaded module [parent-join] [2018-05-30T20:44:57,531][INFO ][o.e.p.PluginsService ] [f9t2Sfl] loaded module [percolator] [2018-05-30T20:44:57,531][INFO ][o.e.p.PluginsService ] [f9t2Sfl] loaded module [reindex] [2018-05-30T20:44:57,531][INFO ][o.e.p.PluginsService ] [f9t2Sfl] loaded module [transport-netty3] [2018-05-30T20:44:57,531][INFO ][o.e.p.PluginsService ] [f9t2Sfl] loaded module [transport-netty4] [2018-05-30T20:44:57,532][INFO ][o.e.p.PluginsService ] [f9t2Sfl] no plugins loaded [2018-05-30T20:44:59,469][INFO ][o.e.d.DiscoveryModule ] [f9t2Sfl] using discovery type [zen] [2018-05-30T20:45:00,107][INFO ][o.e.n.Node ] initialized [2018-05-30T20:45:00,107][INFO ][o.e.n.Node ] [f9t2Sfl] starting ... [2018-05-30T20:45:00,339][INFO ][o.e.t.TransportService ] [f9t2Sfl] publish_address {192.168.23.143:9300}, bound_addresses {[::]:9300} [2018-05-30T20:45:00,356][INFO ][o.e.b.BootstrapChecks ] [f9t2Sfl] bound or publishing to a non-loopback or non-link-local address, enforcing bootstrap checks ERROR: [2] bootstrap checks failed [1]: max file descriptors [4096] for elasticsearch process is too low, increase to at least [65536] [2]: max virtual memory areas vm.max_map_count [65530] is too low, increase to at least [262144] [2018-05-30T20:45:00,365][INFO ][o.e.n.Node ] [f9t2Sfl] stopping ... [2018-05-30T20:45:00,444][INFO ][o.e.n.Node ] [f9t2Sfl] stopped [2018-05-30T20:45:00,444][INFO ][o.e.n.Node ] [f9t2Sfl] closing ... [2018-05-30T20:45:00,455][INFO ][o.e.n.Node ] [f9t2Sfl] closed

     

        那一个max file descriptors 的难点,笔者只须求修改 vim /etc/security/limits.conf 文件扩大句柄值就可以。

    * hard nofile 65536
    * soft nofile 65536
    

    新葡亰496net 16

     

     虚构内存的 max virtual memory areas vm.max_map_count [65530] is too low, increase to at least [262144]  只须要在sysctl.conf 中期维修改max就能够。

    [root@localhost config]# vim /etc/sysctl.conf
    
    vm.max_map_count=655360
    

     

         这么些坑消除的话,es就足以健康运维了,最后记得在elasticsearch.yml 上校host设为0.0.0.0 让长途机器能够访谈。

    [elsearch@localhost config]$ vim elasticsearch.yml
    
    network.host: 0.0.0.0
    

        最后试行 ./elasticsearch -d  让es在后台施行。

    [elsearch@localhost bin]$ ./elasticsearch -d
    
    [elsearch@localhost bin]$ netstat -tlnp
    (Not all processes could be identified, non-owned process info
     will not be shown, you would have to be root to see it all.)
    Active Internet connections (only servers)
    Proto Recv-Q Send-Q Local Address           Foreign Address         State       PID/Program name    
    tcp        0      0 192.168.122.1:53        0.0.0.0:*               LISTEN      -                   
    tcp        0      0 0.0.0.0:22              0.0.0.0:*               LISTEN      -                   
    tcp        0      0 127.0.0.1:631           0.0.0.0:*               LISTEN      -                   
    tcp        0      0 127.0.0.1:25            0.0.0.0:*               LISTEN      -                   
    tcp6       0      0 :::9200                 :::*                    LISTEN      17523/java          
    tcp6       0      0 :::9300                 :::*                    LISTEN      17523/java          
    tcp6       0      0 :::22                   :::*                    LISTEN      -                   
    tcp6       0      0 ::1:631                 :::*                    LISTEN      -                   
    tcp6       0      0 ::1:25                  :::*                    LISTEN      -                   
    [elsearch@localhost bin]$ 
    

     

          好了,本篇就说那样多,假诺你要更加精细化的查询,能够再搭建多少个配套版本的kibana就能够。

     

    本文由新葡亰496net发布于奥门新萄京娱乐场,转载请注明出处:1源码阅读,学习之安装

    关键词:

上一篇:的那些事儿,Net异步实例讲解

下一篇:没有了