elasticsearch訪問
A. elasticsearch 9300 9200有什麼區別
elasticsearch有兩種訪問方式:
1、通過9300埠,9300埠開放給java api來訪問調用,只開放給java通過特定的client來訪問
2、通過9200埠,elasticsearch本身是可以通過http協議來訪問的,自帶restful風格的訪問方式,其它語言以及直接測試訪問都是通過9200埠
總結,在java項目中集成elasticsearch使用9300,其它情況都用9200
B. linux安裝elasticsearch怎樣訪問
它非常適合用來快速配置一個集群中的所有運行相同服務和具備相同配置的計算機節點。現在有大量的開源管理工具,都可以實現這樣的管理,比如dsh、SUSE Manager等。下面是用ClusterSSH管理多台Linux伺服器的具體過程。 如果你是一名Linux系統管理
C. elasticsearch怎樣建立https連接
ElasticSearch是一個基於Lucene的穩定的、分布式、RESTFul的搜索引擎。其實所謂的RestFul就是它提供URL供你調用(建立索引和進行檢索),不過直接這樣使用實在是太兇殘了。所以,它也提供了一系列client包,相當於將curl請求封裝了,client包支持的語言包括Java、php、Python、Ruby和Perl等等。PHP版的client包叫做elasticsearch-php,可以在Git_hub上下載。要使用elasticsearch-php有如下三個要求:1.PHP的版本在5.3.9以上,我用的是PHP5.3.232.在項目中使用Composor來管理包,下載地址如下:]viewplain{"require":{"elasticsearch/elasticsearch":"~1.2"}}3.將composer.phar拷貝到test文件夾中,cd到test文件夾,輸入命令:phpcomposer.pharinstall--no-dev等待安裝成功這個時候test文件夾下面應該會出現vendor文件夾,裡面有elasticsearch、composer、guzzle等文件夾,很多內容4.這個時候,就可以使用elasticsearch進行建立索引和進行檢索了[php]viewplainquery($sql);$rtn=$stmt->fetchAll();//$params=array();$params['index']='log_index';$client->indices()->delete($params);//createindexonlog_date,src_ip,dest_ip$rtnCount=count($rtn);for($i=0;$i$rtn[$i]['log_date'],'src_ip'=>$rtn[$i]['src_ip'],'dest_ip'=>$rtn[$i]['dest_ip']);$params['index']='log_index';$params['type']='log_type';//Documentwillbeindexedtolog_index/log_type/autogenerate_id$client->index($params);}echo'createindexdone!';}functionsearch(){//Elasticsearchphpclient$client=newElasticsearch\Client();$params=array();$params['index']='log_index';$params['type']='log_type';$params['body']['query']['match']['src_ip']='1.122.33.141';$rtn=$client->search($params);var_mp($rtn);}set_time_limit(0);//create_index();search();?>建立索引成功,可以看到「createindexdone!」查詢成功,可以看到返回的結果數組。
D. 如何遠程連接elasticsearch
從錯誤信息來看,是Socket被另外一端關閉了,所以你這邊無法發送信息過去。
E. elasticsearch應該通過什麼方式建立連接
由於需要提升項目的搜索質量,最近研究了一下Elasticsearch,一款非常優秀的分布式搜索程序。最開始的一些筆記放到github,這里只是歸納總結一下。
首先,為什麼要使用Elasticsearch?最開始的時候,我們的項目僅僅使用MySQL進行簡單的搜索,然後一個不能索引的like語句,直接拉低MySQL的性能。後來,我們曾考慮過sphinx,並且sphinx也在之前的項目中成功實施過,但想想現在的數據量級,多台MySQL,以及搜索服務本身HA,還有後續擴容的問題,我們覺得sphinx並不是一個最優的選擇。於是自然將目光放到了Elasticsearch上面。
根據官網自己的介紹,Elasticsearch是一個分布式搜索服務,提供Restful API,底層基於Lucene,採用多shard的方式保證數據安全,並且提供自動resharding的功能,加之github等大型的站點也採用 Elasticsearch作為其搜索服務,我們決定在項目中使用Elasticsearch。
對於Elasticsearch,如果要在項目中使用,需要解決如下問題:
索引,對於需要搜索的數據,如何建立合適的索引,還需要根據特定的語言使用不同的analyzer等。
搜索,Elasticsearch提供了非常強大的搜索功能,如何寫出高效的搜索語句?
數據源,我們所有的數據是存放到MySQL的,MySQL是唯一數據源,如何將MySQL的數據導入到Elasticsearch?
對於1和2,因為我們的數據都是從MySQL生成,index的field是固定的,主要做的工作就是根據業務場景設計好對應的mapping以及search語句就可以了,當然實際不可能這么簡單,需要我們不斷的調優。
而對於3,則是需要一個工具將MySQL的數據導入Elasticsearch,因為我們對搜索實時性要求很高,所以需要將MySQL的增量數據實時導入,筆者唯一能想到的就是通過row based binlog來完成。而近段時間的工作,也就是實現一個MySQL增量同步到Elasticsearch的服務。
F. java怎麼連接到elastic search集群
package cn.test;
import java.net.InetAddress;
import java.net.UnknownHostException;
import org.elasticsearch.action.search.SearchResponse;
import org.elasticsearch.action.search.SearchType;
import org.elasticsearch.client.transport.TransportClient;
import org.elasticsearch.common.settings.Settings;
import org.elasticsearch.common.transport.InetSocketTransportAddress;
import org.elasticsearch.index.query.QueryBuilders;
import org.elasticsearch.search.SearchHit;
public class ElkTest {
// private static final String CLUSTER_NAME = "cluster_name";
public static final String CLUSTER_NAME = "elasticsearch"; //實例名稱
private static final String IP = "127.0.0.1";
//private static final String IP = "192.168.0.29";
private static final int PORT = 9300; //埠
//1.設置集群名稱:默認是elasticsearch,並設置client.transport.sniff為true,使客戶端嗅探整個集群狀態,把集群中的其他機器IP加入到客戶端中
/*
//對ES1.6有效
private static Settings settings = ImmutableSettings
.settingsBuilder()
.put("cluster.name",CLUSTER_NAME)
.put("client.transport.sniff", true)
.build();
*/
//對ES2.0有效
private static Settings settings = Settings
.settingsBuilder()
.put("cluster.name",CLUSTER_NAME)
.put("client.transport.sniff", true)
.build();
//創建私有對象
private static TransportClient client;
//反射機制創建單例的TransportClient對象 ES1.6版本
// static {
// try {
// Class<?> clazz = Class.forName(TransportClient.class.getName());
// Constructor<?> constructor = clazz.getDeclaredConstructor(Settings.class);
// constructor.setAccessible(true);
// client = (TransportClient) constructor.newInstance(settings);
// client.addTransportAddress(new InetSocketTransportAddress(InetAddress.getByName(IP), PORT));
// } catch (Exception e) {
// e.printStackTrace();
// }
// }
//ES2.0版本
static {
try {
client = TransportClient.builder().settings(settings).build()
.addTransportAddress(new InetSocketTransportAddress(InetAddress.getByName(IP), PORT));
} catch (UnknownHostException e) {
e.printStackTrace();
}
}
//取得實例
public static synchronized TransportClient getTransportClient(){
return client;
}
//為集群添加新的節點
public static synchronized void addNode(String name){
try {
client.addTransportAddress(new InetSocketTransportAddress(InetAddress.getByName(name),9300));
} catch (UnknownHostException e) {
e.printStackTrace();
}
}
//刪除集群中的某個節點
public static synchronized void removeNode(String name){
try {
client.removeTransportAddress(new InetSocketTransportAddress(InetAddress.getByName(name),9300));
} catch (UnknownHostException e) {
e.printStackTrace();
}
}
public static void main(String args[]){
String index="logstash-2016.02.16";
String type="logs";
SearchResponse response=ElkTest.getTransportClient().prepareSearch(index)//設置要查詢的索引(index)
.setSearchType(SearchType.DFS_QUERY_THEN_FETCH)
.setTypes(type)//設置type, 這個在建立索引的時候同時設置了, 或者可以使用head工具查看
.setQuery(QueryBuilders.matchQuery("message", "Accept")) //在這里"message"是要查詢的field,"Accept"是要查詢的內容
.setFrom(0)
.setSize(10)
.setExplain(true)
.execute()
.actionGet();
for(SearchHit hit:response.getHits()){
System.out.println(hit.getSourceAsString());
}
}
}
G. 如何訪問虛擬機中的elasticsearch
virtualBox虛擬機上安裝linux系統,如何在兩個虛擬介面上配置網路
環境:
1.VirtualBox虛擬機,Ubuntu 64位系統,虛擬機網卡設置為:
網1用於管理linux系統,與本地主機為橋接關系,網卡2用於與另一個虛擬pc機相連,網卡3用橋接模式與本地主機連接
2.其配置方法為:
進入目錄:cd etc/sysconfig/network-scripts
其下創建ifcfg-eth0,ifcfg-eth1,ifcfg-eth2
ifcfg-eth0文件內容為:
DEVICE="eth0"
H. 如何訪問elasticsearch 集群
使用TransportClient的代碼示例:
try {
int port = 9300;
Map<String, String> m = new HashMap<String, String>();
// 設置client.transport.sniff為true來使客戶端去嗅探整個集群的狀態,
//把集群中其它機器的ip地址加到客戶端中,這樣本地節點掛了,程序還可以正常工作
Settings settings = Settings.settingsBuilder().put(m).put("cluster.name", "elasticsearch").put("client.transport.sniff", true).build();
client = TransportClient.builder().settings(settings).build();
String ip = "";
InetAddress host = InetAddress.getLocalHost();
client.addTransportAddress(new InetSocketTransportAddress(host, port));
} catch (Exception e) {
e.printStackTrace();
}
I. 如何限制訪問elasticsearch的訪問ip
############################## Network And HTTP ###############################
# Elasticsearch, by default, binds itself to the 0.0.0.0 address, and listens
# on port [9200-9300] for HTTP traffic and on port [9300-9400] for node-to-node
# communication. (the range means that if the port is busy, it will automatically
# try the next port).
# Set the bind address specifically (IPv4 or IPv6):
#
#network.bind_host: 192.168.0.1
# Set the address other nodes will use to communicate with this node. If not
# set, it is automatically derived. It must point to an actual IP address.
#
#network.publish_host: 192.168.0.1
# Set both 'bind_host' and 'publish_host':
#
network.host: 127.0.0.1
J. elasticsearch怎麼配置外網訪問
elasticsearch的config文件夾裡面有兩個配置文 件:elasticsearch.yml和logging.yml,第一個是es的基本配置文件,第二個是日誌配置文件,es也是使用log4j來記錄日 志的,所以logging.yml里的設置按普通log4j配置文件來設置就行了。下面主要講解下elasticsearch.yml這個文件中可配置的東西。