ElaticSearch本地环境安装及简单实用Mac

导读:本篇文章讲解 ElaticSearch本地环境安装及简单实用Mac,希望对大家有帮助,欢迎收藏,转发!站点地址:www.bmabk.com

ElaticSearch本地环境安装及简单使用

背景:最近由于工作需要,某些接口对于性能要求越来越高,同时也是希望自己的开发水平能有所提高,产出的接口性能可以尽可能的好,所以就使用了下当下非常火的ElaticSearch,也就是ES,初步使用感觉真的特别好用,很多关联查询瞬间性能提高几十上百倍,所以想要多研究下这方面的技术,决定在自己本地搭建ES搜索引擎

电脑:MacBook Pro

运行环境:Java 1.8.0

一、ES安装步骤

  1. 下载,很简单直接在官网下载就可以: 下载链接: 在这里插入图片描述
  2. 下载完成后会自定解压,然后可以将文件夹按照自己的习惯移动,接下来就是使用了,解压后目录如下 在这里插入图片描述
  3. 进入到ES的文件夹,输入命令启动ES
    bin/elasticsearch
    

在这里插入图片描述 看到这两个就表示启动成功了,接下来我们可以试一试,默认端口是9200,在浏览器输入localhost:9200,得到如下结果表示启动成功在这里插入图片描述4. 也可以直接在终端输入命令:curl -X GET 也是一样的 在这里插入图片描述 到这里安装和调试就结束了,然后就是本地使用了,测试一下先

二、ElaticSearch索引

  1. 新建索引 这里我们新建一个名为test的索引,执行下面的命令
    curl -X PUT 'localhost:9200/test'
    

    可以看到新建完后服务器会返回acknowledged为true,表示创建成功在这里插入图片描述

  2. 查看当前节点下的所有索引
     curl -X GET 'http://localhost:9200/_cat/indices?v'

    我们可以看到我本地只有这一个索引在这里插入图片描述

  3. 删除索引 执行下面的命令,同样会返回acknowledged为true,表示删除成功,这时我们再去查看当前节点下的所有索引就发现没有了
    curl -X DELETE 'localhost:9200/test'

    为了下面的测试,我们重新建立刚才的索引

三、简单数据操作

  1. 新增数据 先建mapping结构
	curl -X PUT "localhost:9200/test" -H 'Content-Type:application/json' -d'{   "mappings":{        "person":{            "properties":{                "id":{                    "type":"long",                    "fields":{                        "keyword":{                            "type":"keyword",                            "ignore_above":256                        }                    }                },                "name":{                    "type":"keyword",                    "fields":{                        "keyword":{                            "type":"keyword",                            "ignore_above":256                        }                    }                },                "age":{                    "type":"integer",                    "fields":{                        "keyword":{                            "type":"keyword",                            "ignore_above":4                        }                    }                },                "gender":{                    "type":"keyword",                    "fields":{                        "keyword":{                            "type":"keyword",                            "ignore_above":4                        }                    }                }            }        }    }}'

mapping建好以后可以直接新增数据了,这里我们建一个简单的对象,其实这里可以直接新增数据,但是那样会导致数据类型可能会出现问题,所以最好还是先建好对应的映射文件

	curl -X POST 'localhost:9200/test/person/1' -H 'Content-Type:application/json' -d '
        {
          "id":1,
          "name": "张三",
          "age": 25,
          "gender": "男"
        }'
  1. 根据Id查询单个数据
curl 'localhost:9200/test/person/1?pretty=true'

在这里插入图片描述 URL 的参数pretty=true表示以易读的格式返回。 返回的数据中,found字段表示查询成功,_source字段返回原始记录 3. 修改记录 修改其实就是将同一个数据主键对应的数据重新发一次,就会自动替换掉 在这里插入图片描述 细心的话会发现重新查出来的数据version变成了3,这里解释下这个字段,没对单条数据操作一次版本就会加一,而且请求的返回值中result变成了update,说明这条不是新增的 4. 删除单个数据

curl -X DELETE 'localhost:9200/test/person/1'
  1. 查询所有 这里我事先手动插入了几条数据 使用命令:
curl 'localhost:9200/test/person/_search'

在这里插入图片描述 返回结果的 字段表示该操作的耗时(单位为毫秒),timed_out字段表示是否超时,hits字段表示命中的记录,里面子字段的含义如下: took:操作的耗时(单位为毫秒) timed_out:表示是否超时 total:返回记录数,本例是6条。 max_score:最高的匹配程度,本例是1.0。 hits:命中的记录,返回的记录组成的数组。

四、ES全文检索

Elastic 的查询非常特别,使用自己的查询语法,要求 GET 请求带有数据体

  1. 匹配查询 1.1 单个匹配
curl 'localhost:9200/test/person/_search'  -H 'Content-Type:application/json' -d '
{
  "query" : { "match" : { "name" : "李四" }}
}'

上面代码使用 Match 查询,指定的匹配条件是name字段里面”李四”这个名字 在这里插入图片描述 Elastic 默认一次返回10条结果,可以通过size字段改变这个设置

curl 'localhost:9200/test/person/_search'  -H 'Content-Type:application/json' -d '
{
  "query" : { "match" : { "name" : "李四" }},
  "size": 1
}'

1.2 多条件匹配

curl 'localhost:9200/test/person/_search' -H 'Content-Type:application/json' -d '
{
  "query": {
    "bool": {
      "must": [
        { "match": { "name": "王五" } },
        { "match": { "gender": "男" } }
      ]
    }
  }
}'

上面代码使用 bool 查询,指定的匹配条件是name”:”王五”加上gender:”男”同时命中才可以 在这里插入图片描述 可以看出,当我用王二加上性别为男去查询的时候没有找到,换成王五+男可以查到

bool 查询又可以细分成,must,must_not 和 should ,这几个结合使用 must表示必须匹配(或者包含),must_not表示必须不匹配(或者包含),should表示必须同时命中才可以,这里就不详细使用了,下一篇跟随java代码一起介绍

五、补充

mapping中参数类型: 1.text 字符串,分词,全文索引 2.keyword 关键字,不分词,适合id,email等这种不分词的字段 3.数字类型有integer、long、short、byte、double、float等类型 4.date 时间类型 5.boolean 布尔类型

查询返回值参数含义: took:是查询花费的时间,毫秒单位。 time_out:标识查询是否超时。 _shards:描述了查询分片的信息,查询了多少个分片、成功的分片数量、失败的分片数量等。 hits:搜索的结果,total是全部的满足的文档数目,hits是返回的实际数目(默认是10)。 _score是文档的分数信息,与排名相关度有关,参考各大搜索引擎的搜索结果,就容易理解。 total:1;(代表当前ES里总数只有一条数据,不管你发送任何请求,ES都会把总数返回) _index:我们指定查询的索引(类似数据库的某个库)。 _type:我们指定查询的文档(类似数据库的某张表) _id:查询指定的id。 _source:查询的具体返回数据。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/1466.html

(0)
小半的头像小半

相关推荐

极客之音——专业性很强的中文编程技术网站,欢迎收藏到浏览器,订阅我们!