ElasticSearch的Windows的安装和简单使用

ElasticSearch的基本概念

Elaticsearch,简称为ES, ES是一个开源的高扩展的分布式全文检索引擎,它可以近乎实时的存储、检索数据;本身扩展性很好,可以扩展到上百台服务器,处理PB级别的数据。ES也使用Java开发并使用Lucene作为其核心来实现所有索引和搜索的功能,但是它的目的是通过简单的RESTful API来隐藏Lucene的复杂性,从而让全文搜索变得简单。

下载压缩包

ElasticSearch的官方地址: https://www.elastic.co/products/elasticsearch

安装和启动

Window版的ElasticSearch的安装很简单,类似于Tomcat,解压开即安装完毕,解压后的ElasticSearch的目录结构如下:


image.png

进入bin目录,运行elasticsearch.bat文件即可


image.png

启动成功后,访问http://localhost:9200, 显示类似入下信息:

image.png

补充: 9300是tcp通讯端口,9200是http协议的RESTful接口 。

使用ES图形化管理界面Head

准备:

 1. 需要安装Node.js
 2. 安装grunt (npm install -g grunt-cli)

安装

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

将文件存如本地文件夹,例如如:C:\es\elasticsearch-head-master文件,文件目录如下


image.png

启动命令行,进入C:\es\elasticsearch-head-master目录,运行

1.  npm install 
2.  grunt server

启动成功,访问:http://localhost:9100,显示如下

image.png

需要配置ES跨域才能连接

配置ES运行跨域

进入ES安装目录,进入config文件夹,编辑elasticsearch.yml文件。在文件夹底部加入:

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

重启服务后,刷新页面,显示如下


image.png

使用POST操作ES

1. 创建Index和mapping

url: http://localhost:9200/news(news是index名称,自定义即可)
method: PUT
请求体如下:(选择raw 类型为json)

{
    "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"
                }
            }
        }
    }
}

artcile为type名,自定义即可。properties下的属性名也是根据需要自定义即可。 orient/strip%7CimageView2/2/w/1240)

2. 删除Index

url: localhost:9200/news
method:DELETE

也可以通过Head直接删除,点击动作按钮下的删除选项,在输入框里输入删除即可


image.png

添加Document

url: http://localhost:9200/news/article/1
method: POST
请求体:

{
    "id":1,
    "title": "经济学讲义",
    "content": "你能不能在生活中找一个例子,看上去是个公正的规则,但它背后其实是有效率的考量的?"
}

查看结果:


image.png

注意:url中 http://localhost:9200/news/article/1 的1(_id)可以省略,会自动生成字符串的_id

修改Document

修改的请求和添加的请求是一样,只需要找到要修改的文档的_id
url: http://localhost:9200/news/article/1
method: POST
请求体:

{
    "id":1,
    "title": "【修改后的】经济学讲义",
    "content": "你能不能在生活中找一个例子,看上去是个公正的规则,但它背后其实是有效率的考量的?"
}

查看结果:


image.png

删除Document

url: http://localhost:9200/news/article/1
method: DELETE

根据_id查询

url: http://localhost:9200/blog/article/4
method: GET

term查询

url: http://localhost:9200/blog/article/_search
method: POST
请求体:

{
    "query": {
        "term": {
            "title": "测"
        }
    }
}

queryString查询

url: http://localhost:9200/blog/article/_search
method: POST
请求体:

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

安装IK分词器插件

由于标准分词器对中文的分词是一个字一字的,导致搜索文档里的词组得不到结果,我们需要引入中文分词器IK

查询分析

postman请求,查看分词器分词结果
url:http://localhost: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
        }
    ]
}

补充: analyzer为分词算法,text字段为查询的关键词或句子

IK插件简介

IKAnalyzer是一个开源的,基于java语言开发的轻量级的中文分词工具包。
IK提供了两个分词算法ik_smart 和 ik_max_word,其中 ik_smart 为最少切分,ik_max_word为最细粒度划分

安装IK插件

IK下载地址:https://github.com/medcl/elasticsearch-analysis-ik/releases
将下载的包解压,放到ES的安装目录下的plugins文件夹下

image.png

然后重启ES

查看用IK分词器的分词结果

url:http://localhost:9200/_analyze?analyzer=ik_max_word&pretty=true&text=祖国真好啊
查询结果:

{
    "tokens": [
        {
            "token": "祖国",
            "start_offset": 0,
            "end_offset": 2,
            "type": "CN_WORD",
            "position": 0
        },
        {
            "token": "真好",
            "start_offset": 2,
            "end_offset": 4,
            "type": "CN_WORD",
            "position": 1
        },
        {
            "token": "好啊",
            "start_offset": 3,
            "end_offset": 5,
            "type": "CN_WORD",
            "position": 2
        }
    ]
}

创建用ik_max_word算法的Index

url:http://localhost:9200/blog
method: PUT
请求体:

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

你可能感兴趣的:(ElasticSearch的Windows的安装和简单使用)