ElasticSearch
借助postman工具来测试
一、创建索引库
格式:使用put请求 输入: http://localhost:9200/索引库名称
比如这个 http://localhost:9200/xc_course
二、创建映射
在索引中每个文档都包括了一个或多个field,创建映射就是向索引库中创建field的过程,下边是document和field
与关系数据库的概念的类比:
文档(Document)----------------Row记录
字段(Field)-------------------Columns 列
注意:6.0之前的版本有type(类型)概念,type相当于关系数据库的表,ES官方将在ES9.0版本中彻底删除type。
上边讲的创建索引库相当于关系数据库中的数据库还是表?
1、如果相当于数据库就表示一个索引库可以创建很多不同类型的文档,这在ES中也是允许的。
2、如果相当于表就表示一个索引库只能存储相同类型的文档,ES官方建议 在一个索引库中只存储相同类型的文
档。
格式:post 请求:http://localhost:9200/xc_course/doc/_mapping
在body里面输入
{ "properties":{ "name":{ "type":"text" }, "description":{ "type":"text" }, "studymodel":{ "type":"keyword" } } }
在浏览器通过head插件查看
三、创建文档
格式:put 或Post http://localhost:9200/xc_course/doc/id值
(如果不指定id值ES会自动生成ID)
例如下面这个:http://localhost:9200/xc_course/doc/4028e58161bcf7f40161bcf8b77c0000
四、搜索文档
1、根据课程id查询文档
发送:get http://localhost:9200/xc_course/doc/4028e58161bcf7f40161bcf8b77c0000
使用 postman测试:
2、查询所有记录
发送 get http://localhost:9200/xc_course/doc/_search
3、查询名称中包括spring 关键字的的记录(在查询所有记录的基础上后面跟上?q=)
发送:get http://localhost:9200/xc_course/doc/_search?q=name:bootstrap
4、查询学习模式为201001的记录
发送 get http://localhost:9200/xc_course/doc/_search?q=studymodel:201001
在这里要注意一个点:
使用_search搜索的时候,报错 Expected [START_OBJECT] but found [VALUE_NUMBER]
{ "error": { "root_cause": [ { "type": "parsing_exception", "reason": "Expected [START_OBJECT] but found [VALUE_NUMBER]", "line": 1, "col": 1 } ], "type": "parsing_exception", "reason": "Expected [START_OBJECT] but found [VALUE_NUMBER]", "line": 1, "col": 1 }, "status": 400 }
查询以后,才知道在使用_search搜索的时候body里面不能有数据,于是清空body的数据
然后再次查询,就可以了
查询结果分析:
{ "took": 3, "timed_out": false, "_shards": { "total": 1, "successful": 1, "skipped": 0, "failed": 0 }, "hits": { "total": 1, "max_score": 1, "hits": [ { "_index": "xc_course", "_type": "doc", "_id": "4028e58161bcf7f40161bcf8b77c0000", "_score": 1, "_source": { "name": "Bootstrap开发框架", "description": "Bootstrap是由Twitter推出的一个前台页面开发框架,在行业之中使用较为广泛。此开发框架包含了大量的CSS、JS程序代码,可以帮助开发者(尤其是不擅长页面开发的程序人员)轻松的实现一个不受浏览器限制的精美界面效果。", "studymodel": "201001" } } ] } }
took:本次操作花费的时间,单位为毫秒。
timed_out:请求是否超时
_shards:说明本次操作共搜索了哪些分片
hits:搜索命中的记录
hits.total : 符合条件的文档总数 hits.hits :匹配度较高的前N个文档
hits.max_score:文档匹配得分,这里为最高分
_score:每个文档都有一个匹配度得分,按照降序排列。
_source:显示了文档的原始内容。