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这个文件中可配置的东西。