栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 前沿技术 > 大数据 > 大数据系统

ElasticSearch - 客户端操作

ElasticSearch - 客户端操作

ElasticSearch - 客户端操作

目录
  • ElasticSearch - 客户端操作
    • 1. ElasticSearch 客户端操作
      • 1.1 elasticsearch-head
      • 1.2 使用 Postman 工具进行 Restful 接口访问
        • 1.2.1 ElasticSearch 接口语法
        • 1.2.2 创建索引 index 和映射 mapping
        • 1.2.3 创建索引后设置 Mapping
        • 1.2.4 删除索引 index
        • 1.2.5 创建文档 document
        • 1.2.6 修改文档 document
        • 1.2.7 删除文档 document
        • 1.2.8 查询文档 - 根据ID查询
        • 1.2.9 查询文档 - querystring 查询
        • 1.2.10 查询文档 - term 查询
    • 2. IK 分词器
      • 2.1 IK 分词器简介
      • 2.2 IK 分词器安装


1. ElasticSearch 客户端操作

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

  1. elasticsearch-head插件
  2. 使用elasticsearch提供的RESTful接口直接访问
  3. 使用elasticsearch提供的API进行访问
1.1 elasticsearch-head

ElasticSearch不同于Solr自带图形化界面,可以通过安装elasticsearch的head插件,完成图形化界面的效果,完成索引数据的查看。安装插件的方式有两种,在线安装和本地安装。本文采用本地安装的方式进行head插件的安装。elasticsearch-5.*以上版本安装head需要安装node和grunt

  1. 下载head插件:https://github.com/mobz/elasticsearch-head

提供elasticsearch-head-master插件压缩包

  1. 将elasticsearch-head-master压缩包解压到任意目录,但是要和elasticsearch的安装目录区别开
  2. 下载nodejs:http://nodejs.cn/download/

安装完毕,可以通过终端控制台输入:node -v -> 查看版本号

  1. 将grunt安装为全局命令,Grunt是基于Node.js的项目构建工具

在控制台输入如下执行命令:

npm install -g grunt-cli

执行结果如下图:

  1. 进入elasticsearch-head-master目录启动head,在命令提示符下输入命令:
> npm install
> grunt server

  1. 打开浏览器,访问 http://localhost:9100

如果不能成功连接到es服务,需要修改ElasticSearch的config目录下的配置文件:config/elasticsearch.yml,增加以下两句命令:

http.cors.enabled: true
http.cors.allow-origin: "*"

然后重新启动ElasticSearch服务。

1.2 使用 Postman 工具进行 Restful 接口访问 1.2.1 ElasticSearch 接口语法
curl -X '://:/?' -d ''

其中:

1.2.2 创建索引 index 和映射 mapping

请求url:

PUT     192.168.2.190: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-head查看索引

1.2.3 创建索引后设置 Mapping

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

在上一个步骤中不设置maping信息,直接使用put方法创建一个索引,然后设置mapping信息。 或者进行如下操作:

请求的url:

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

请求体:

{
    "books": {
        "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截图

查看修改后的mapping信息

1.2.4 删除索引 index

请求URL:

DELETE  192.168.2.190:9200/blog2

Postman截图

1.2.5 创建文档 document

请求URL:

POST    192.168.2.190:9200/blog1/article/1

请求体:

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

Postman截图

elasticsearch-head查看

1.2.6 修改文档 document

请求URL:

POST    192.168.2.190:9200/blog1/article/1

请求体:

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

Postman截图

elasticsearch-head查看

1.2.7 删除文档 document

请求URL:

DELETE  192.168.2.190:9200/blog1/article/1

Postman截图

elasticsearch-head查看

1.2.8 查询文档 - 根据ID查询

请求URL:

GET 		192.168.2.190:9200/blog1/article/1

Postman截图

1.2.9 查询文档 - querystring 查询

请求URL:

POST    192.168.2.190:9200/blog1/article/_search

请求体:

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

Postman截图:

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

  • 钢索 -> “钢”, “索”,搜索是分成两个词,注意Standard标准分词器,会把汉字每个字一个词存到索引库中的tilte,也是按照Standard进行的分词,所以搜索钢索能搜到这个document
1.2.10 查询文档 - term 查询

请求URL:

POST    192.168.2.190:9200/blog1/article/_search

请求体:

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

Postman截图

  • query_string:搜索之前对搜索的关键词分词 - 搜 / 索
  • term:对搜索的关键词不分词 - 搜索
  • 标准分词Standard:一个字一个词存入索引库

2. IK 分词器 2.1 IK 分词器简介

IKAnalyzer是一个开源的、基于Java语言开发的轻量级的中文分词工具包。从2006年12月推出1.0版开始,IKAnalyzer已经推出了3个大版本。最初,它是以开源项目Lucene为应用主体的,结合词典分词和文法分析算法的中文分词组件。新版本的IKAnalyzer3.0则发展为面向Java的公用分词组件,独立于Lucene项目,同时提供了对Lucene的默认优化实现。

IK分词器3.0的特性如下:

  1. 采用了特有的“正向迭代最细粒度切分算法“,具有60万字/秒的高速处理能力。
  2. 采用了多子处理器分析模式,支持:英文字母(IP地址、Email、URL)、数字(日期,常用中文数量词,罗马数字,科学计数法),中文词汇(姓名、地名处理)等分词处理。
  3. 对中英联合支持不是很好,在这方面的处理比较麻烦。需再做一次查询,同时是支持个人词条的优化的词典存储,更小的内存占用。
  4. 支持用户词典扩展定义。
  5. 针对Lucene全文检索优化的查询分析器IKQueryParser;采用歧义分析算法优化查询关键字的搜索排列组合,能极大的提高Lucene检索的命中率。
2.2 IK 分词器安装
  1. 安装 IK 分词器

IK分词器下载地址:https://github.com/medcl/elasticsearch-analysis-ik/releases

将IK分词器上传到虚拟机上,然后解压,并改名字为ik

unzip elasticsearch-analysis-ik-5.6.8.zip
mv elasticsearch ik

将ik目录拷贝到docker容器的plugins目录下

docker cp ./ik c_es:/usr/share/elasticsearch/plugins

  1. IK 分词器测试

访问:http://192.168.2.190:9200/_analyze?analyzer=ik_max_word&pretty=true&text=全国人民代表大会

访问:http://192.168.2.190:9200/_analyze?analyzer=ik_smart&pretty=true&text=全国人民代表大会

  • ik_max_word:会将文本做最细粒度的拆分

    比如会将“全国人民代表大会”拆分为“全国、人民、代表、大会、人民代表大会”等词语。

  • ik_smart:会做最粗粒度的拆分

    比如不会将“全国人民代表大会”拆分。


转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/281377.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号