ES问题总结
第一篇。es问题总结elasticsearch/elasticsearch-sqlelasticsearch-sql是基于查询es的类sql实现。其中采用的是阿里的druid框架,其中elasticlexer和elasticsqlexprparser都是对druid中的mysql的进行了扩展。
1.错误信息:exceptioninthread"main"nonodeavailableexception[noneoftheconfigurednodesareavailable:解决方法:增加settings设置(红色标记)。
settingssettings=settings.settingsbuilder
.put("cluster.name","elasticsearchdemo").build;clientclient=transportclient.builder.addplugin(deletebyqueryplugin.class).settings(settings).build.addtransportaddresses(address1,address2);2.问题2->term查询不到数据:创建索引的时候没有说明不使用分词器(默认使用分词器),当用term查询时,原来数据中的大写转换成小写,可以在测试分词器中测试一下。如果仍然用大写字母查询,导致查询不到数据。如{"term":{"gender":"f"}},必须写成{"term":{"gender":"f"}}3问题3注意各种默认值,比如es-sql中默认limit为200,term中size默认为10.例子如下:
searchresponseresponse=client.preparesearch(test_index)
.setsearchtype(searchtype.query_then_fetch)
.setquery(querybuilder).addaggregation(aggregationbuilders.terms("ageagg").field("age").size(100)
.subaggregation(aggregationbuilders.stats("agestat").field("age")))
.execute.actionget;其中按照age分组统计,其中size默认为10(红色部分).不确定可以写size(0),代码自动写为maxint。
3.问题.(脑裂)今天集群中的健康值为yellow,查看日志报错为网络异常。错误的时间已经过去10个小时,现在网络也没有异常。刚开始的时候一直怀疑网络故障,问题一直找不到突破口,分别访问没有在集群的节点,也是没有问题的。网上搜索说是由于ping.timeout默认为3秒,如果超时就会出现多个集群的现象。联想到本系统中的网络异常,发现为两个集群。可查看每个节点的集群状态的primary属性。修改方式:
discovery.zen.ping.timeout:60sdiscovery.zen.minimum_master_nodes:
34.elasticsearch-sql查询语句
(未完,全文共11677字,当前显示1334字)
(请认真阅读下面的提示信息)