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