平台搭建---大数据框架---分布式搜索引擎与面向文档数据库

lucene学习

来源:孔浩Lucene视频教程
Lucene学习思维导图
这里写图片描述

分词流程图
这里写图片描述

分词器的类型
这里写图片描述

分词过滤器类型
这里写图片描述

分词结果输出
这里写图片描述

Lucene 4.0.0 core API

面向文档的数据库:(Elasticsearch的另一种用法)

Elasticsearch是一个基于lucene的分布式搜索引擎,但是我们也可以将其作为数据库使用。可参考:查询优化及查询方案设计
Elasticsearch 使用的详细教程:
Elasticsearch 权威指南(中文版)
官网
英文文档

Elasticsearch的安装

更详细可参考
安装前首先去ES的官网下载软件包,下载地址为:https://www.elastic.co/downloads/elasticsearch。官网提供ZIP、TAR 、MSI等多种格式的软件包,在Windows下可以下载ZIP压缩包或者MSI服务安装包。
对于window系统,可下载ZIP压缩文件包,例如下载的文件名为“elasticsearch-6.3.0.zip”,可将其解压到C盘根目录(也可以是其他盘)。由目录名可以清楚的了解每个目录具体是做什么的,比如:config目录存放配置文件、logs目录存放日志文件、lib目录存放依赖包、bin目录存放系统启动脚本等。进入bin目录,双击“elasticsearch.bat”即可启动Elasticsearch服务。出现“started”标志就说明服务启动成功。
在 Windows 上面运行 Elasticsearch,你可以从 http://curl.haxx.se/download.html 中下载 cURL。 cURL 给你提供了一种将请求提交到 Elasticsearch 的便捷方式,并且安装 cURL 之后,你可以通过复制与粘贴去尝试书中的许多例子。
安装cURL 可参考《windows(64位)下使用curl安装》、《windows环境下 curl 安装和使用》,其中有windows控制台curl中文乱码的解决方法。

注意事项
运行elasticsearch6.3.0版本官网的例子时,应该如下运行

curl -X PUT "localhost:9200/customer/_doc/1?pretty" -H "Content-Type: application/json" -d "{  \"name\": \"John Doe\"}"

参数都应该用双引号,而直接复制官网例子,如Content-Type: application/json是单引号,此时会报"Content-Type header [application/x-www-form-urlencoded] is not supported";对于双引号内部的双引号,要加反斜杠;对于josn格式的数据,应该写在同一行,不要用美化后的格式;

操作 命令 说明
索引文档 PUT twitter/_doc/1
索引文档 PUT twitter/_doc/1?version=2 都完整覆盖
索引文档 PUT twitter/_doc/1?op_type=create
索引文档 PUT twitter/_doc/1/_create
索引文档 POST twitter/_doc/
索引文档 POST twitter/_doc?routing=kimchy
索引文档 PUT twitter/_doc/1?timeout=5m
查询文档 curl -X GET "localhost:9200/twitter/_doc/0?pretty"
查询文档 curl -I HEAD "localhost:9200/twitter/_doc/0" HTTP/1.1 200 OK<br>content-type: application/json; <br>charset=UTF-8<br>content-length: 40
查询文档 GET twitter/_doc/0?_source=false 不显示source的具体内容,只告知source有无内容
查询文档 GET twitter/_doc/0?_source_include=*.id&_source_exclude=entities 按照过滤条件显示source的部分内容
查询文档 GET twitter/_doc/0?_source=*.id,retweeted 按照过滤条件显示source的部分内容
设置索引格式 curl -X PUT "localhost:9200/twitter" -H "Content-Type: application/json" -d"{ \"mappings\": { \"_doc\": { \"properties\": { \"counter\": { \"type\": \"integer\", \"store\": false }, \"tags\": { \"type\": \"keyword\", \"store\": true } } } }}" 如果索引已经存在会出错
查询文档 curl -X GET "localhost:9200/twitter/_doc/1?stored_fields=tags,counter" 如果不传stored_fields会显示完整的_source;传的部分内容stored_fields则只显示符合条件的fileds
索引文档 curl -X PUT "localhost:9200/twitter/_doc/2?routing=user1" -H "Content-Type: application/json" -d"{ \"counter\" : 1, \"tags\" : [\"white\"]}" 增加_routing这个域,增加一个域可能会使得查询的时候更好过滤
查询文档 curl -X GET "localhost:9200/twitter/_doc/2?routing=user1&stored_fields=tags,counter"
查询文档 curl -X GET "localhost:9200/twitter/_doc/1/_source" 直接获取_source,而不显示其他filed
查询文档 curl -X GET "localhost:9200/twitter/_doc/1/_source?_source_include=*.id&_source_exclude=entities" 加入过滤条件
删除文档 curl -X DELETE "localhost:9200/twitter/_doc/1"
删除文档 curl -X DELETE "localhost:9200/twitter/_doc/1?routing=kimchy"
删除文档 curl -X DELETE "localhost:9200/twitter/_doc/1?timeout=5m"
删除type和index 操作方法类似
删除文档 curl -X POST "localhost:9200/twitter/_delete_by_query" -H "Content-Type: application/json" -d"{ \"query\": { \"match\": { \"message\": \"some message\" } }}" 按照查询条件进行删除
删除文档 curl -X POST "localhost:9200/twitter/_doc/_delete_by_query?conflicts=proceed" -H "Content-Type: application/json" -d"{ \"query\": { \"match_all\": {} }}"
删除文档 curl -X POST "localhost:9200/twitter,blog/_docs,post/_delete_by_query" -H "Content-Type: application/json" -d"{ \"query\": { \"match_all\": {} }}" 同时在多个索引中删除文档
删除文档 curl -X POST "localhost:9200/twitter/_delete_by_query?routing=1" -H "Content-Type: application/json" -d"{ \"query\": { \"range\" : { \"age\" : { \"gte\" : 10 } } }}"
删除文档 curl -X POST "localhost:9200/twitter/_delete_by_query?scroll_size=5000" -H "Content-Type: application/json" -d"{ \"query\": { \"term\": { \"user\": \"kimchy\" } }}"
任务查询 curl -X GET "localhost:9200/_tasks?detailed=true&actions=*/delete/byquery" 按照任务命令查询
任务查询 curl -X GET "localhost:9200/_tasks/taskId:1" 按照任务id查询
取消任务查询 curl -X POST "localhost:9200/_tasks/task_id:1/_cancel"
取消任务查询 curl -X POST "localhost:9200/_delete_by_query/task_id:1/_rethrottle?requests_per_second=-1"
按slice删除 curl -X POST "localhost:9200/twitter/_delete_by_query" -H "Content-Type: application/json" -d"{ \"slice\": { \"id\": 0, \"max\": 2 }, \"query\": { \"range\": { \"likes\": { \"lt\": 10 } } }}"
更多用法可查官网

猜你喜欢

转载自blog.csdn.net/qingqing7/article/details/80578817