i) Githubjava
“Github使用Elasticsearch搜索20TB的数据,包括13亿的文件和1300亿行的代码”node
这个不用介绍了吧,码农们都懂的,Github在2013年1月升级了他们的代码搜索,由solr转为elasticsearch,目前集群规模为26个索引存储节点和8个客户端节点(负责处理搜索请求),详情请看官方博客https://github.com/blog/1381-a-whole-new-code-searchpython
Mozilla公司以火狐著名,它目前使用 WarOnOrange 这个项目来进行单元或功能测试,测试的结果以 json的方式索引到elasticsearch中,开发人员能够很是方便的查找 bug。
Socorro是Mozilla 公司的程序崩溃报告系统,一有错误信息就插入到 Hbase和Postgres 中,而后从 Hbase中读取数据索引到elasticsearch中,方便查找。mysql
ii) 在服务层面主要有:linux
[boss@localhost ~]$ mkdir elasticesearch
[boss@localhost ~]$ cd elasticesearch/
[boss@localhost elasticesearch]$ tar xzf elasticsearch-2.3.5.tar.gz
[boss@localhost elasticesearch]$ cd bin/
[boss@localhost bin]$ ./elasticsearch
i) 安装的目录布局以下: git
Type github |
Description sql |
Default Location 数据库 |
Setting json |
home |
elasticsearch 安装目录 | path.home | |
bin |
二进制脚本,包括elasticsearch启动节点 | {path.home}/bin | |
conf |
配置文件路径,包含elasticsearch.yml | {path.home}/config | path.conf |
data |
在节点上每一个索引/碎片的数据文件的位置。能够有多个目录。 | {path.home}/data | path.data |
work |
零时文件目录(工做目录) | {path.home}/work | path.work |
logs |
日志文件目录 | {path.home}/logs | path.logs |
若是有多个数据目录,能够容许使用数据分拆技术,将数据可以按照设置放在不一样的磁盘上。这个分拆原来是很简单的,只是保证一个文件完整的存在一个地方,具体是若是选择存在那个磁盘上是经过 index.store.distributor来配置的:
cluster.name: elasticsearch自然具有集群能力,因此这里就有一个集群名称配置,默认为elasticsearch,最好修改下。
node.name: 节点名称,也就是集群中的各个节点的名称,也须要配置,方便之后管理和java api开发
network.host: 容许访问的host,能够是ipv4也能够是ipv6形式,在es2.x下若是不配,那么就只能localhost访问了。
http.port: http端口号,用于restful、插件的访问端口,默认9200,不能重复
transport.tcp.port: 通信端口,java api 访问的就是这个端口,默认9300,不能重复
discovery.zen.ping.unicast.hosts: 这个是集群启动的时候,默认发现的主机列表,而后经过这里的host再去发现别的节点,须要至少配置一个,否则好像有点问题,我在集群搭建的时候就由于没配置遇到一些意外状况。
discovery.zen.minimum_master_nodes: 最小的master选举人数,默认为2,这种形式计算(total number of nodes /2+1)
discovery.zen.ping.multicast.enabled: 自动发现节点开关,若是为false,则新加入的节点不会被发现。
discovery.zen.ping.timeout: 自动发现超时时间。
target/releases/elasticsearch-analysis-ik-{version}.zip
到 your-es-root/plugins/ik
四、重启elasticsearch。这点很重要,我就由于没有重启折腾了一上午。
编译安装:
cd F:\software\elasticsearch-analysis-lc-pinyin-dev_2.2.2\elasticsearch-analysis-lc-pinyin
mvn package
配置使用:
curl -XPUT http://localhost:9200/addr
curl -XPOST http://localhost:9200/addr/std/_mapping -d'
{
"std": {
"properties": {
"detail_name": {
"type": "string",
"analyzer": "lc_index",
"search_analyzer": "lc_search",
"fields": {
"cn": {
"type": "string",
"analyzer": "ik_max_word",
"search_analyzer": "ik_max_word"
}
}
},
"door_name": {
"type": "string",
"analyzer": "lc_index",
"search_analyzer": "lc_search",
"fields": {
"cn": {
"type": "string",
"analyzer": "ik_max_word",
"search_analyzer": "ik_max_word"
}
}
}
}
}
}
'
#!/bin/sh # This example is a template to connect to Oracle # The JDBC URL and SQL must be replaced by working ones. DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )" bin=${DIR}/../bin lib=${DIR}/../lib JAVA_HOME="/opt/java/jdk1.8.0_101" echo ' { "type" : "jdbc", "jdbc" : { "url" : "jdbc:oracle:thin:@//***.***.***.***:1521/***", "connection_properties" : { "oracle.jdbc.TcpNoDelay" : false, "useFetchSizeWithLongColumn" : false, "oracle.net.CONNECT_TIMEOUT" : 10000, "oracle.jdbc.ReadTimeout" : 50000 }, "user" : "pboss", "password" : "******", "sql" : "select std_addr_id as \"_id\",std_addr_id as \"std_addr_id\", name as \"door_name\", detail_name as \"detail_name\" from addr_std_addr", "index" : "addr", "type" : "std", "elasticsearch" : { "cluster" : "alpha-application", "host" : "10.10.100.104", "port" : 9300 }, "max_bulk_actions" : 20000, "max_concurrent_bulk_requests" : 10, "index_settings" : { "index" : { "number_of_shards" : 1, "number_of_replica" : 0 } } } } ' | ${JAVA_HOME}/bin/java \ -cp "${lib}/*" \ -Dlog4j.configurationFile=${bin}/log4j2.xml \ org.xbib.tools.Runner \ org.xbib.tools.JDBCImporter
"interval": "1800", 这里是同步数据的频率 1800s,半小时,能够按须要设成 1s或其它 "schedule" : "0 0/60 0-23 ? * *", 同步数据任务 60分钟一次 "flush_interval" : "5s", 刷新间隔为5S