- 浏览: 52063 次
- 性别:
- 来自: 北京
最新评论
-
zhumingpeng:
Error creating bean with name ' ...
mybatis 学习之多数据源整合 -
herolhl:
你好,还在吗?想请教下,现在我获得了oauth_verifie ...
导出yahoo,linkedin,gmail,hotmail,contacts 联系人 api java -
Mybeautiful:
fenshen6046 写道Mybeautiful 写道请教下 ...
导出yahoo,linkedin,gmail,hotmail,contacts 联系人 api java -
fenshen6046:
Mybeautiful 写道请教下Linkedin的问题,好像 ...
导出yahoo,linkedin,gmail,hotmail,contacts 联系人 api java -
Mybeautiful:
请教下Linkedin的问题,好像只能得到 firstName ...
导出yahoo,linkedin,gmail,hotmail,contacts 联系人 api java
文章列表
搜索可以横跨多个索引或者多种类型如下:在twitter索引下的所有类型文章搜索
GET /twitter/_search?q=user:kimchy
针对某几个类型进行搜索
GET /twitter/tweet,user/_search?q=user:kimchy
搜索横跨几个index搜索类型为tweet的数据
GET /kimchy,elasticsearch/tweet/_search?q=tag:wow
或者搜索所有索引下类型为tweet的数据
GET /_all/tweet/_search?q=tag:wow
搜索所有索引
GET /_search?q=tag:wow
默认情况下,e ...
创建或者更新接口
PUT twitter/tweet/1
{
"user" : "kimchy",
"post_date" : "2009-11-15T14:12:12",
"message" : "trying out Elasticsearch"
}
结果为{
"_shards" : {
"total" : 2,
...
多索引
大部分涉及到index的api接口都支持同事处理多个index,使用test1,test2(或者针对所有index的_all)。同时还支持通配符如:test*,t*st甚至可以使用添加+test*或者排除-test3。
日期数据支持
索引中可以有时间的各种信息https://www.elastic.co/guide/en/elasticsearch/reference/current/date-math-index-names.html
公共选择
url中添加?pretty=true返回会信息更加友好。?format=yaml会使返回以yaml方式展示,更加可读。
统计信息返回也会有一 ...
$ jps | grep Elasticsearch
14542 Elasticsearch
执行$ kill -SIGTERM 14542
当es出现问的时候
在关闭的时候会返回一些对应码
JVM internal error 128
Out of memory error 127
Stack overflow error 126
Unknown virtual machine error 125
Serious I/O error 124
Unknown fatal error 1
更新之前一定要备份数据。可以使用一些插件差检测潜在的问题。
滚动升级
es集群准许一台一台的升级并且对用户无影响。多版本的es不支持此种情况,因为新版本的数据分片不能被老版本识别。
第一步 禁止发数据分片分配
当 ...
在默认情况下,es认为你运行在开发环境,有些设置没有正确设置,则会记录一条提醒的日志。但是一旦你设置了network.host这样的高级设置,es则认为你运行在生产环境了,上面的提醒则会变成异常抛出。
系统设置
设置最大文件打开数目
/etc/security/limits.conf 添加 elasticsearch - nofile 65536
设置jvm堆内存
默认在jvm.options文件中设置jvm为2g内存。对于生产环境尽量重新设置内存占用大小。
1最小堆内存和最大堆内存要一致(否则在内存扩容会出现灾难性的等待)
2堆内存设置越大,则缓存的数据就越大,同样垃圾回收也会越耗时
...
堆内存设置
最好设置jvm的启动内存和可使用的最大内存 大小一致,否则在内存不够需要扩容的时候,很可能会导致es进行暂停。如果设置了内存锁定(即bootstrap.memory_lock为true),只会锁定初始化的内存大小,即当初始化内存大小和最大内存不一致的时候,会导致差值没有被锁定。
内存锁定
内存回收的时候,如果内存被换到硬盘上,将会浪费大量时间。有一些办法可以阻止内存被换到硬盘上 如:bootstrap.memory_lock为true。为了完成这个操作你可能需要设置mlockall。
最大线程
由于es需要大量的线程来处理请求,所以必须设置准许es启动至少2048个线程。(你可以在/ ...
设置数据和日志的保存路径
path:
logs: /var/log/elasticsearch
data: /var/data/elasticsearch
path.data也可以设置在不同的路径下
path:
data:
- /mnt/elasticsearch_1
- /mnt/elasticsearch_2
- /mnt/elasticsearch_3
cluster.name 代表你想要加入的集群名称(默认是elasticsearch)。这里一定要注意不同环境的集群名称要不同,否则会使数据混乱。(es是根据集群名称加入集群的,如果集群名称相同,则会 ...
es只需要很少的设置接口,大部分的设置都可以通过api接口进行在线设置。
需要两个配置文件
elasticsearch.yml 配置es的信息
log4j2.properties配置es日志信息
这两个文件都存在config目录下($ES_HOME/config/)。Debian 和 RPM包安装的config路径为/etc/elasticsearch/
如果想使用指定config路径启动
./bin/elasticsearch -Epath.conf=/path/to/my/config/
设置数据和日志保存路径
path.data: /var/lib/elasticsearch
path. ...
根据原文基于主要内容进行翻译记录(原文地址:https://www.elastic.co/guide/en/elasticsearch/reference/current/index.html)。
有些章节,认为没必要记录,比如如何安装es。所以序号上会有一定缺失。
搜索API
GET /bank/_search?q=*&sort=account_number:asc&pretty
rest方式搜索bank索引下的所有数据,并且按照account_number 上升方式返回
类似下面的搜索方式
GET /bank/_search
body为:
{
"query": { "match_all": {} },
"sort": [
{ "account_number": "asc" }
]
}
初步学习搜索语言
下面的搜索全部文档 ...
添加id为1,type为external,index为customer的数据
PUT /customer/external/1?pretty
{
"name": "John Doe"
}
如果在执行上面的操作,则会覆盖以前的数据。
如果不想指定id的话,es会生成默认的id
PUT /customer/external?pretty
{
"name": "John Doe"
}
上面的是覆盖数据,如果想要更新数据
POST /customer/external/1/_update?pretty
{
& ...
查看集群的健康情况
GET /_cat/health?v
green代表所有所有节点正常,yellow代表部分备份无法正常工作,red代表有一些数据无法获取到。
查看所有的节点
GET /_cat/nodes?v
查看所有index
GET /_cat/indices?v
删除index
DELETE /customer?pretty
nrt 近实时
es是自动发现并组合成集群,所以一定要区分名字,即,使用名字来区分集群。
node:节点。就是一台单独的服务器。可以提供搜索,保存等功能。每台机器最好有一个自己的名字,如果没有,则创建的时候回使用uuid作为起名字。每台服务器一定要指定一个名字,默认将加入elasticsearch这个集群。
index:类似db
type:类似table
document:就是一条具体数据,使用json保存
shards:分片。当index过大的时候很难保证高性能提供服务,所以讲index分成几个分片。默认为5
replicas:备份。每个shard可以有0或者多个备份。默认为1
背景:
数据库的client,connection等编码都是latin1,表的编码是utf-8.
开发环境是eclipse,默认编码是utf8.
这种方式下在linux命令行下获取中文数据正常,但是java的jdbc获取数据是乱码。(以前是用c获取的数据,现在要改成java获取数据)
在java的jdbc中假设获取数据sql 为select field from table ;乱码
可以修改sql语句为
select convert(unhex(hex(convert(field using latin1))) using utf8) as content from table;
这样就可 ...