一、简介

关于Java Web的开发周边技术,搜索引擎也是经常被用到的,其中solr和es是被当作技术选型经常出现的,他们都是基于lucene,但是,你没法直接用 Lucene,必须自己写代码去调用它的接口。而今天所讲的es,它是一个分布式、RESTful 风格的搜索和数据分析引擎,能够解决不断涌现出的各种用例。

一、简介

关于Java Web的开发周边技术,搜索引擎也是经常被用到的,其中solr和es是被当作技术选型经常出现的,他们都是基于lucene,但是,你没法直接用 Lucene,必须自己写代码去调用它的接口。而今天所讲的es,它是一个分布式、RESTful 风格的搜索和数据分析引擎,能够解决不断涌现出的各种用例。

解压刚才下载的压缩包,然后进入bin目录,可以看到一些es的相关命令:

使用bin目录中的elasticsearch命令启动:

它会启动在9200端口,这是我们可以访问一下http://127.0.0.1:9200/:

看它的tagline:ou Know, for Search。证明启动成功了,可以开始我们的搜索了。

三:概念

在使用es之前,先来了解一些它的基本概念:

1、Node:单个 Elastic 实例称为一个节点(node)

2、Cluster:一组节点构成一个集群(cluster),Elastic 本质上是一个分布式数据库,允许多台服务器协同工作,每台服务器可以运行多个 Elastic 实例。

3、Index:Elastic 数据管理的顶层单位就叫做 Index(索引),Elastic 会索引所有字段,经过处理后写入一个反向索引(Inverted Index)。查找数据的时候,直接查找该索引。

4、Document:Index 里面单条的记录称为 Document(文档)。许多条 Document 构成了一个 Index。

5、Type:Document 可以分组,这种分组就叫做 Type,它是虚拟的逻辑分组,用来过滤 Document。

四:中文分词

在搜索引擎中,还有一个重要的设置,那就是中文分词的设置,毕竟国内开发不得不安装这个插件,就像编码处理一样,刚才在bin目录中大家也看到一个命令:elasticsearch-plugin,我们可以利用它来安装中文分词神器-ik中文分词器,安装命令如下:

/bin/elasticsearch-plugin install https://github.com/medcl/elasticsearch-analysis-ik/releases/download/v5.5.1/elasticsearch-analysis-ik-5.5.1.zip

接着,重新启动 Elastic,就会自动加载这个新安装的插件。

五:数据的操作

1、新建Index,指定需要分词的字段:

命令
curl -X PUT 'localhost:9200/cities' -d '
{"mappings": {"city": {"properties": {"name": {"type": "text","analyzer": "ik_max_word","search_analyzer": "ik_max_word"},"desc": {"type": "text","analyzer": "ik_max_word","search_analyzer": "ik_max_word"}}}}
}'

上述操作新建一个名称为cities的 Index,里面有一个名称为city的 Type。person有两个属性:name和desc。analyzer是字段文本的分词器,search_analyzer是搜索词的分词器。ik_max_word分词器是插件ik提供的,可以对文本进行最大数量的分词。{"acknowledged":true,"shards_acknowledged":true}是服务器返回的JSON值,acknowledged=true表示操作成功。

2、新增记录

向指定的 /Index/Type 发送 PUT 请求,就可以在 Index 里面新增一条记录。

命令
curl -X PUT 'localhost:9200/cities/city/1' -d '
{"name": "北京","desc": "帝都,北漂的人想出去,外边的人想北漂。"
}'

如图所示,服务器返回的 JSON 对象,会给出 Index、Type、Id、Version 等信息。

在请求的路径中,最后的1是该条记录的 Id,它不一定是数字,任意字符串都可以。新增记录的时候,也可以不指定 Id,这时要改成 POST 请求。

命令:
curl -X POST 'localhost:9200/cities/city' -d '
{"name": "上海","desc": "上海滩,多少人想成为许文强一样的人物"
}'

3、查看记录

向/Index/Type/Id发出 GET 请求,就可以查看这条记录。

命令
curl 'localhost:9200/cities/city/1?pretty=true'

4、删除记录

删除记录就是发出 DELETE 请求。

命令
curl -X DELETE 'localhost:9200/cities/city/1'

5、更新记录

更新记录就是使用 PUT 请求,重新发送一次数据。

命令:
curl -X PUT 'localhost:9200/cities/city/AXKyTASFQrU13vhMO-rj' -d '
{"name": "上海","desc": "上海滩,多少人想成为许文强一样的人物,还需要丁力一样的帮手"
}'

6、返回所有记录

使用 GET 方法,直接请求/Index/Type/_search,就会返回所有记录。我们把刚才删除的北京添加进来,再查询:

命令
curl 'localhost:9200/cities/city/_search'

7、全文搜索

Elastic 有自己的查询语法,要求 GET 请求带有数据体。

命令:
curl 'localhost:9200/cities/city/_search'  -d '
{"query" : { "match" : { "desc" : "北漂" }}
}'

上面是查询语法,下面是查询结果。

8、逻辑运算

如果有多个搜索关键字, Elastic 认为它们是or关系。

命令:
curl 'localhost:9200/cities/city/_search'  -d '
{"query" : { "match" : { "desc" : "北漂 许文强" }}
}'

如果要执行多个关键词的and搜索,必须使用布尔查询。

命令:
curl 'localhost:9200/cities/city/_search'  -d '
{"query": {"bool": {"must": [{ "match": { "desc": "北漂" } },{ "match": { "desc": "许文强" } }]}}
}'

没有结果返回。

elasticsearch在日常开发中用途很多,感兴趣可以动手试一试,了解一下它都有什么功能。

全文搜索引擎Elasticsearch的初体验:基本概念和操作相关推荐

  1. 全文搜索引擎 Elasticsearch 入门概念

    基本概念 Node 与 Cluster Elastic 本质上是一个分布式数据库,允许多台服务器协同工作,每台服务器可以运行多个 Elastic 实例. 单个 Elastic 实例称为一个节点(nod ...

  2. 全文搜索引擎----ElasticSearch和Solr

    全文搜索引擎 ElasticSearch 还是 Solr? 最近项目组安排了一个任务,项目中用到了全文搜索,基于全文搜索 Solr,但是该 Solr 搜索云项目不稳定,经常查询不出来数据,需要手动全量 ...

  3. 全文搜索引擎Elasticsearch,这篇文章给讲透了!(Elasticsearch技术原理及实现方式)

    关于Elasticsearch的技术原理及实现方式看了两篇讲的非常好的文章,在这里分享给大家. 其中一篇是: Elasticsearch 技术分析(九):全文搜索引擎Elasticsearch,这篇文 ...

  4. 全文搜索引擎Elasticsearch,这篇文章给讲透了

    之前已经分享过Elasticsearch的使用和原理的知识,由于近期在公司内部做了一次分享,所以本篇主要是基于之前的博文的一个总结,希望通过这篇文章能让读者大致了解Elasticsearch是做什么的 ...

  5. 全文搜索引擎 Elasticsearch 简介 及其与 Python 的对接实现

    什么是 Elasticsearch 想查数据就免不了搜索,搜索就离不开搜索引擎,百度.谷歌都是一个非常庞大复杂的搜索引擎,他们几乎索引了互联网上开放的所有网页和数据.然而对于我们自己的业务数据来说,肯 ...

  6. 2万字详解,彻底讲透 全文搜索引擎 Elasticsearch

    来源:cnblogs.com/jajian/p/11223992.html 由于近期在公司内部做了一次 Elasticsearch 的分享,所以本篇主要是做一个总结,希望通过这篇文章能让读者大致了解 ...

  7. 全文搜索引擎 Elasticsearch 入门(ik,kibana,x-pack)

    全栈工程师开发手册 (作者:栾鹏) 架构系列文章 全文搜索属于最常见的需求,开源的 Elasticsearch (以下简称 Elastic)是目前全文搜索引擎的首选. 它可以快速地储存.搜索和分析海量 ...

  8. 全文搜索引擎ElasticSearch

    什么是ElasticSearch? Elasticsearch和Redis, Mysql一样,不仅服务于Java语言,其它语言也可以使用, 它的功能也类似一个数据库,能高效的从大量数据中搜索匹配指定关 ...

  9. 全文搜索引擎Elasticsearch,这篇文章给讲透了!

    于elasticsearch的深度好文. 生活中的数据 搜索引擎是对数据的检索,所以我们先从生活中的数据说起.我们生活中的数据总体分为两种: 结构化数据 非结构化数据 结构化数据:也称作行数据,是由二 ...

最新文章

  1. 如何用chrome查看post get及返回的数据
  2. 高并发下防止库存超卖解决方案
  3. Angular开发准备
  4. python下载谷歌地图瓦片_python获取bing地图发布自己的TMS服务(一)下载瓦片
  5. @程序员,你的技术过气了吗?
  6. java基本数据类型泛型_Java中的泛型
  7. 为什么使用close()关闭所打开文件
  8. Linux内核对per-cpu变量的实现
  9. HOOK NtCreateSection
  10. 接口性能测试方案分析
  11. SQLServer用COMPUTE 和 COMPUTE BY 汇总数据
  12. 微信小程序如何搭建自己的后台(超详细,超完整)(上线必备)!!!
  13. Win10笔记本电脑设置插入鼠标时自动禁用触摸板
  14. hihocoder 1257 Snake Carpet
  15. 为civil3D2018 添加snoop DB工具
  16. 情绪识别(python opencv dlib)
  17. ESXi服务器遇到 IPMI_SI_DRV 的解决, 感谢原作者 以及今天 解决问题.
  18. fly.io ruby on rails
  19. 微信公众平台接口程序语音天气
  20. 灵魂筹码一直显示连接服务器,灵魂筹码进不去怎么办_灵魂筹码进入显示错误解决方法_3DM单机...

热门文章

  1. Html5---div布局方式
  2. java 数据库排序_Java如何排序数据库表的数据内容?
  3. 格里高利时转儒略日计算公式
  4. 怎么关闭Windows安全启动?
  5. 软件测试人员去外包公司待遇怎么样?外包薪资高吗?
  6. 重磅!图灵奖,公布!
  7. 黑群晖NAS (ARPL引导)安装教程
  8. 国盛源投资量化买卖一定会挣钱吗?量化买卖怎样挣钱的?
  9. 1. Java8 vs Java11
  10. 医疗软件还能怎么做,才能更进一步。