情感测试简介

首页 » 常识 » 问答 » 小白笔记ElasticSearch
TUhjnbcbe - 2021/4/10 2:41:00
中科白癜风四大惠民活动 http://auto.qingdaonews.com/content/2018-06/19/content_20138493.htm
Rest风格说明methodurl地址描述PUTlocalhost:/索引名称/类型名称/文档id创建文档(指定文档id)POSTlocalhost:/索引名称/类型名称创建文档(随机文档ID)POSTlocalhost:/索引名称/类型名称/文档id/_update修改文档DELETELocalhost:/索引名称/类型名称/文档id删除文档GETLocalhost:/索引名称/类型名称/文档id查询文档通过文档IDPOSTLocalhost:/索引名称/类型名称/_search查询所有数据关于索引以及文档的基本操作增

创建一个文档

PUT/索引名/--类型名--/文档id{请求体}

![](/Users/weihaolee/Library/ApplicationSupport/typora-user-images/截屏-02-.54.58.png)

完成了自动增加索引数据也成功的添加了

配置字段类型

PUT/test2{"mappings":{"properties":{"name":{"type":"text"},"age":{"type":"long"},"birthday":{"type":"date"}}}}查

查看数据

POST/test3/_search

查看字段类型

GETtest2

默认字段类型

添加数据

PUT/test3/_doc/1{"name":"SkyID","age":21,"birth":"-08-23"}查看自动分配的字段类型

如果自己的文档字段没有指定,那么es就会给我们默认配置字段类型

扩展:通过命令elasticsearch索引情况通过GET_cat/可以获取当前es的更多信息

根据指定内容匹配

#根据name进行搜索(简单查询)GET/sky/user/_search?q=name:Sky#对于复杂条件标准写法_source选择展示的数据sort为排序#from和size为分页功能#from表示从第几个数据开始size表示返回多少条数据(单页面数据)GET/sky/user/_search{"query":{"match":{"name":"Sky"}},"_source":["name","desc"],"sort":[{"age":{"order":"desc"}}],"from":0,"size":1}

布尔值查询

多条件查询must(相当于and),所有的条件都要符合

GET/sky/_search{"query":{"bool":{"must":[{"match":{"name":"潭"}},{"match":{"age":"2"}}]}}}

多条件查询should(相当于or),满足一个就可以

GET/sky/_search{"query":{"bool":{"should":[{"match":{"name":"潭"}},{"match":{"age":"2"}}]}}}

多条件查询must_not(相当于not),满足一个就可以

GET/sky/_search{"query":{"bool":{"must_not":[{"match":{"name":"潭"}},{"match":{"age":"2"}}]}}}

过滤器filter(gt大于、gte大于等于、lt小于、lte小于等于、eq等于)

GET/sky/_search{"query":{"bool":{"must":[{"match":{"name":"潭"}}],"filter":[{"range":{"age":{"gt":10}}}]}}}

多条件查询多个条件使用空格隔开进行查询只要满足其一便可被查出来通过分值进行基本的判断

GET/sky/_search{"query":{"match":{"tags":"男王"}}}

精确查询

term查询是直接通过倒排索引指定的词条进程精确查找的

关于分词:

term,直接查询精确搭配keyword使用

match会使用分词器解析(先分析文档,然后在通过分析的文档进行查询)

「两个类型textkeyword」

创建测试文档

#设定索引类型PUT/testdb{"mappings":{"properties":{"name":{"type":"text"},"desc":{"type":"keyword"}}}}#添加两条数据用于测试PUT/testdb/_doc/1{"name":"李维昊","desc":"我是一个程序员"}PUT/testdb/_doc/2{"name":"李维昊2","desc":"我是一个程序员2"}

查询name(text类型)

GETtestdb/_search{"query":{"term":{"name":"李"}}}

两条信息均有返回

查询desc(keyword类型)

GETtestdb/_search{"query":{"term":{"desc":"我是一个程序员"}}}

返回结果仅为一个

并且如果我们改为单字搜索发现

GETtestdb/_search{"query":{"term":{"desc":"程"}}}

发现无返回结果

高亮查询

GETtestdb/_search{"query":{"match":{"name":"李维昊"}},"highlight":{"fields":{"name":{}}}}

查看返回结果发现「李维昊」添加了标签

同样的我们可以自定义返回标签

GETtestdb/_search{"query":{"match":{"name":"李维昊"}},"highlight":{"pre_tags":"p","post_tags":"/p","fields":{"name":{}}}}改

在ElasticSearch当中我们有可以使用两种方式进行数据修改

重新使用PUT值进行添加数据

首先查询文档当前内容

POST/test3/_search

使用PUT重新添加数据(将名字修改)

PUT/test3/_doc/1{"name":"WeiHao.L","age":21,"birth":"-08-23"}

执行指令,通过es返回的json信息我们可以看到其中的version版本变为了2。证明我们此索引数据进行了更新

再次使用search进行查询,更新成功

但是这种方式的缺点为如果我们忘记输入某一项的值会出现单条记录被清空的情况(如图name被清空)

使用POST方法进行update

此方法仅需将需要更新的数据进行发送请求即可

POST/test3/_doc/1/_update{"doc":{"name":"Sky"}}

更新成功

DELETEtest1WeiHaoLee

1
查看完整版本: 小白笔记ElasticSearch