elasticsearch 查看索引_Elasticsearch搜索引擎应用实战(二)

03fbbac2-fde2-47bc-8f95-2375eba9e37e

搜索引擎

Elasticsearch相关文章

1. Elasticsearch搜索引擎应用实战(一)

2. Elasticsearch搜索引擎应用实战(二)(本文)

ES的安装

下面的实例都是基于ES的6.4.0版本来实现的。

1、安装Java

因为ES是Java开发的,所以要先安装Java,在6.X的版本中,ES需要的Java的最低版本为Java 8。建议您使用Oracle JDK version 1.8.0_131或者更新的版本。可以使用以下命令来检查Java的运行版本:

java -version

2、安装ES

Java安装完成之后,我们可以下载并运行ES。二进制包与所有历史版本都可以从https://www.elastic.co/downloads中获得。对于每一个版本,您可以选择zip、tar、DEB或者RPM包安装,下面我们使用zip包说明一下安装过程。

下载ES 6.4.0版本:

wget https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-6.4.0.zip

解压:

unzip elasticsearch-6.4.0.zip

安装运行:

cd elasticsearch-6.4.0./bin/elasticsearch

如果一切顺利,我们目前已经在一个集群上启动了一个名为“9cbJFwh”的节点了(在您的例子中节点名称将会不一样)。我们可以通过如下命令来查看此集群和节点的基本信息:

curl http://127.0.0.1:9200/

假如我们想覆盖集群或者节点的名称,我们可以使用如下命令启动:

./bin/elasticsearch -Ecluster.name=my_cluster_name-Enode.name=my_node_name

注:

1)由于ES可以接收用户输入的脚本并且执行,为了系统安全考虑,ES不能使用root账户启动,建议创建一个单独的用户来运行ES。

2)./bin/elasticsearch为在前台启动ES,还可以在后台启动:

./bin/elasticsearch -d

3)关闭ES

A、ctrl+c

对于在前台启动的方式来说,直接ctrl+c是简单的关闭单个节点的方法

B、杀掉服务器进程也可以

Linux上使用kill命令,Windows上使用任务管理器

C、用命令来关闭整个集群/单个节点

由于ES常用在集群中,集群停止相对有些复杂,我们会在下个chat中详细说明。

ES的REST API

1、集群管理

1)检查集群健康状况

curl -XGET http://127.0.0.1:9200/_cat/health?v

2)获取集群的节点列表

curl -XGET http://127.0.0.1:9200/_cat/nodes?v

3)查看节点的基本信息

curl -XGET http://127.0.0.1:9200/_cluster/state/nodes?pretty

4)查看分片情况

curl -XGET http://127.0.0.1:9200/_cat/shards?pretty

2、索引管理

1)查看所有的索引

curl -XGET http://127.0.0.1:9200/_cat/indices?v

如果此命令出现如下响应,那说明我们的集群中还没有索引:

health status index uuid pri rep docs.count docs.deletedstore.size pri.store.size

2)创建索引

curl -XPUT http://127.0.0.1:9200/blog?pretty

此时再执行上面查看所有的索引命令,即可查看到刚刚创建的索引。

3)删除索引

curl -XDELETE http://127.0.0.1:9200/blog?pretty

4)创建索引,同时导入索引mappings

curl -H'Content-Type:application/json' -XPUT -d@mappings.jsonhttp://127.0.0.1:9200/blog?pretty

mappings.json参考:

{ "mappings": { "content": { "properties":{ "name":{ "type":"keyword" }, "age":{ "type":"keyword" } } } }}

5)获取索引基本信息

curl -XGET http://127.0.0.1:9200/blog?pretty

6)获取索引的mappings信息

curl -XGET http://127.0.0.1:9200/blog/_mappings?pretty

7)获取索引的settings信息

curl -XGET http://127.0.0.1:9200/blog/_settings?pretty

3、文档管理

我们用创建索引命令创建一个blog索引,然后开始如下操作。

1)新增文档

curl -H'Content-Type:application/json' -XPUThttp://127.0.0.1:9200/blog/user/1/?pretty-d'{"name":"tunan", "age":30}'

此命令为在blog索引user类型中插入一条id为1、name为tunan、age为30的数据。

2)查看文档

curl -XGET http://127.0.0.1:9200/blog/user/1?pretty

3)查看文档,不指定ID

curl -XGET http://127.0.0.1:9200/blog/user/_search?pretty

4)替换文档

curl -H'Content-Type:application/json' -XPUThttp://127.0.0.1:9200/blog/user/1?pretty-d'{"name":"tunan","age":"32"}'

5)没有明确ID时,新增文档

curl -H'Content-Type:application/json' -XPOSThttp://127.0.0.1:9200/blog/user?pretty -d'{"name":"meigui","age":"20"}'

如果不指定ID,ES将会生成一个随机ID。因为我们没有指定ID,所以此处使用了POST动作,而不是PUT。

6)更新文档

curl -H'Content-Type:application/json' -XPOSThttp://127.0.0.1:9200/blog/user/1/_update?pretty-d'{"doc":{"name":"tunan2018"}}'

7)更新文档,同时新增字段

curl -H'Content-Type:application/json' -XPOSThttp://127.0.0.1:9200/blog/user/1/_update?pretty-d'{"doc":{"name":"tunan2008","sex":1}}'

8)更新文档,用简本来执行

curl -H'Content-Type:application/json' -XPOSThttp://127.0.0.1:9200/blog/user/1/_update?pretty-d'{"script":"ctx._source.age+=1”}'

ctx._source 代表当前将被更新的源文档

9)删除文档

curl -XDELETE http://127.0.0.1:9200/blog/user/1?pretty

10)搜索文档

curl -H'Content-Type:application/json' -XGEThttp://127.0.0.1:9200/blog/user/_search?pretty-d'{"query":{"term":{"name":{"value":"meigui"}}}}'

注:

1、由以上的实例,我们可以看到访问ES中数据的模式(pattern)为:

///

2、在url后面增加pretty,可以使返回数据格式化输出

3、通常情况下,REST API接口使用9200访问,JavaAPI使用9300访问

ES在 Spring Boot 中的应用实例:TransportClient

ES本身是Java开发的,天生对Java的支持能力是最好的,下面我们看一下如何使用TransportClient来操作ES数据。

1、mvn仓库配置

在mvn项目中可以在pom.xml增加mvn仓库,如下:

org.elasticsearch.client transport ${elasticsearch.version}

2、连接ES集群

客户端通过TransportClient对象可以使用远程连接的方式连接ES集群。例如:

TransportClient client = new PreBuiltTransportClient(Settings.EMPTY);client.addTransportAddress(newTransportAddress(InetAddress.getByName(host1), 9300)).addTransportAddress(newTransportAddress(InetAddress.getByName(host2), 9300));

3、新增文档

HashMap data = new HashMap<>();data.put("name", "tunan");data.put("age", 30);BulkRequestBuilderbulkRequestBuilder = client.prepareBulk();IndexRequestBuilderindexRequestBuilder = client.prepareIndex("blog", "user", u.getCid());indexRequestBuilder.setSource(data);bulkRequestBuilder.add(indexRequestBuilder);bulkRequestBuilder.execute();

4、修改文档

HashMap data =newHashMap<>();data.put("name","tunan66666");data.put("age", 28);UpdateRequestBuilder updateRequestBuilder =client.prepareUpdate("blog","user", id);updateRequestBuilder.setDoc(data);updateRequestBuilder.execute().actionGet();

5、查询文档

GetResponseresponse = client.prepareGet(“blog”, “user”, id).get();Stringsource = response.getSource().toString();longversion = response.getVersion();StringindexName = response.getIndex();Stringtype = response.getType();Stringid = response.getId();

6、删除文档

BulkRequestBuilderbuilder = client.prepareBulk();for (Integer id : idList) { builder.add(client.prepareDelete("blog", "user", id).request());}builder.get();
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值