ElasticSearch索引库维护

第四章 ElasticSearch的客户端操作

实际开发中,主要有三种方式可以作为elasticsearch服务的客户端:

  • 第一种,elasticsearch-head插件
  • 第二种,使用elasticsearch提供的Restful接口直接访问
  • 第三种,使用elasticsearch提供的API进行访问

4.1 安装Postman工具

Postman中文版是postman这款强大网页调试工具的windows客户端,提供功能强大的Web API & HTTP 请求调试。软件功能非常强大,界面简洁明晰、操作方便快捷,设计得很人性化。Postman中文版能够发送任何类型的HTTP 请求 (GET, HEAD, POST, PUT…),且可以附带任何数量的参数。

4.1 下载Postman工具

Postman官网:https://www.getpostman.com

课程资料中已经提供了安装包

ElasticSearch索引库维护_第1张图片

4.2 注册Postman工具

ElasticSearch索引库维护_第2张图片
ElasticSearch索引库维护_第3张图片

4.2 使用Postman工具进行Restful接口访问

4.2.1 ElasticSearch的接口语法

curl -X '://:/?' -d ''

其中:

参数 解释
VERB 适当的 HTTP 方法谓词 : GETPOSTPUTHEAD 或者 DELETE
PROTOCOL http 或者 https(如果你在 Elasticsearch 前面有一个 https 代理)
HOST Elasticsearch 集群中任意节点的主机名,或者用 localhost 代表本地机器上的节点。
PORT 运行 Elasticsearch HTTP 服务的端口号,默认是 9200
PATH API 的终端路径(例如 _count 将返回集群中文档数量)。Path 可能包含多个组件,例如:_cluster/stats_nodes/stats/jvm
QUERY_STRING 任意可选的查询字符串参数 (例如 ?pretty 将格式化地输出 JSON 返回值,使其更容易阅读)
BODY 一个 JSON 格式的请求体 (如果请求需要的话)

4.2.2 创建索引index和映射mapping

请求url:

PUT		localhost:9200/blog1

请求体:

{
    "mappings": {
        "article": {
            "properties": {
                "id": {
                	"type": "long",
                    "store": true,
                    "index":"not_analyzed"
                },
                "title": {
                	"type": "text",
                    "store": true,
                    "index":"analyzed",
                    "analyzer":"standard"
                },
                "content": {
                	"type": "text",
                    "store": true,
                    "index":"analyzed",
                    "analyzer":"standard"
                }
            }
        }
    }
}

postman截图:

ElasticSearch索引库维护_第4张图片

elasticsearch-head查看:

ElasticSearch索引库维护_第5张图片

###4.2.3 创建索引后设置Mapping

我们可以在创建索引时设置mapping信息,当然也可以先创建索引然后再设置mapping。

在上一个步骤中不设置maping信息,直接使用put方法创建一个索引,然后设置mapping信息。

请求的url:

POST	http://127.0.0.1:9200/blog2/hello/_mapping

请求体:

{
    "hello": {
            "properties": {
                "id":{
                	"type":"long",
                	"store":true
                },
                "title":{
                	"type":"text",
                	"store":true,
                	"index":true,
                	"analyzer":"standard"
                },
                "content":{
                	"type":"text",
                	"store":true,
                	"index":true,
                	"analyzer":"standard"
                }
            }
        }
  }

PostMan截图
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-PLQsrMsm-1680793129912)(image\61.png)]

4.2.4 删除索引index

请求url:

DELETE		localhost:9200/blog1

postman截图:

ElasticSearch索引库维护_第6张图片

elasticsearch-head查看:

ElasticSearch索引库维护_第7张图片

4.2.5 创建文档document

请求url:

POST	localhost:9200/blog1/article/1

请求体:

{
	"id":1,
	"title":"ElasticSearch是一个基于Lucene的搜索服务器",
	"content":"它提供了一个分布式多用户能力的全文搜索引擎,基于RESTful web接口。Elasticsearch是用Java开发的,并作为Apache许可条款下的开放源码发布,是当前流行的企业级搜索引擎。设计用于云计算中,能够达到实时搜索,稳定,可靠,快速,安装使用方便。"
}

elasticsearch-head查看:
ElasticSearch索引库维护_第8张图片

postman截图:

ElasticSearch索引库维护_第9张图片

4.2.6 修改文档document

请求url:

POST	localhost:9200/blog1/article/1

请求体:

{
	"id":1,
	"title":"【修改】ElasticSearch是一个基于Lucene的搜索服务器",
	"content":"【修改】它提供了一个分布式多用户能力的全文搜索引擎,基于RESTful web接口。Elasticsearch是用Java开发的,并作为Apache许可条款下的开放源码发布,是当前流行的企业级搜索引擎。设计用于云计算中,能够达到实时搜索,稳定,可靠,快速,安装使用方便。"
}

postman截图:

ElasticSearch索引库维护_第10张图片

elasticsearch-head查看:

ElasticSearch索引库维护_第11张图片

4.2.7 删除文档document

请求url:

DELETE	localhost:9200/blog1/article/1

postman截图:

ElasticSearch索引库维护_第12张图片

elasticsearch-head查看:

ElasticSearch索引库维护_第13张图片

4.2.8 查询文档-根据id查询

请求url:

GET	localhost:9200/blog1/article/1

postman截图:

ElasticSearch索引库维护_第14张图片

4.2.9 查询文档-querystring查询

请求url:

POST	localhost:9200/blog1/article/_search

请求体:

{
    "query": {
        "query_string": {
            "default_field": "title",
            "query": "搜索服务器"
        }
    }
}

postman截图:
ElasticSearch索引库维护_第15张图片

注意:

将搜索内容"搜索服务器"修改为"钢索",同样也能搜索到文档,该原因会在下面讲解中得到答案

{
    "query": {
        "query_string": {
            "default_field": "title",
            "query": "钢索"
        }
    }
}

4.2.10 查询文档-term查询

请求url:

POST	localhost:9200/blog1/article/_search

请求体:

{
    "query": {
        "term": {
            "title": "搜索"
        }
    }
}

postman截图:

ElasticSearch索引库维护_第16张图片

第五章 IK 分词器和ElasticSearch集成使用

5.1 上述查询存在问题分析

在进行字符串查询时,我们发现去搜索"搜索服务器"和"钢索"都可以搜索到数据;

而在进行词条查询时,我们搜索"搜索"却没有搜索到数据;

究其原因是ElasticSearch的标准分词器导致的,当我们创建索引时,字段使用的是标准分词器:

{
    "mappings": {
        "article": {
            "properties": {
                "id": {
                	"type": "long",
                    "store": true,
                    "index":"not_analyzed"
                },
                "title": {
                	"type": "text",
                    "store": true,
                    "index":"analyzed",
                    "analyzer":"standard"	//标准分词器
                },
                "content": {
                	"type": "text",
                    "store": true,
                    "index":"analyzed",
                    "analyzer":"standard"	//标准分词器
                }
            }
        }
    }
}

例如对 “我是程序员” 进行分词

标准分词器分词效果测试:

http://127.0.0.1:9200/_analyze?analyzer=standard&pretty=true&text=我是程序员

分词结果:

{
  "tokens" : [
    {
      "token" : "我",
      "start_offset" : 0,
      "end_offset" : 1,
      "type" : "",
      "position" : 0
    },
    {
      "token" : "是",
      "start_offset" : 1,
      "end_offset" : 2,
      "type" : "",
      "position" : 1
    },
    {
      "token" : "程",
      "start_offset" : 2,
      "end_offset" : 3,
      "type" : "",
      "position" : 2
    },
    {
      "token" : "序",
      "start_offset" : 3,
      "end_offset" : 4,
      "type" : "",
      "position" : 3
    },
    {
      "token" : "员",
      "start_offset" : 4,
      "end_offset" : 5,
      "type" : "",
      "position" : 4
    }
  ]
}

而我们需要的分词效果是:我、是、程序、程序员

这样的话就需要对中文支持良好的分析器的支持,支持中文分词的分词器有很多,word分词器、庖丁解牛、盘古分词、Ansj分词等,但我们常用的还是下面要介绍的IK分词器。

你可能感兴趣的:(elasticsearch,java,大数据)