字符串类型
text,keyword
数值类型
long,integer,short,byte,double,float,half_float,scaled_float
日期类型
date
布尔值类型
boolean
二进制类型
binary
…
基于该风格设计的软件可以可以更简洁,更有层次,,更易于实现缓存等机制。
基本Rest命令如下:
使用的是kibana开发工具,具体安装可以参考栏目中的相关文章。
PUT /demo/user/1
{
"name":"tom",
"age":22,
"desc":"niuniuniu",
"tags":["帅哥","大牛"]
}
GET /demo/user/1
我们可以通过PUT方法修改数据:
如下我们可以发现他的版本号增加了同时result变为updated。
但是这种方式存在一些问题,如果不传值,之前的数据就会丢失。
这是现在的数据:
我们这次通过PUT更新的时候不传递age试试:
可以发现之前的age丢失了。
这种方式不会使数据丢失,灵活性更高。
POST /demo/user/3/_update
{
"doc":{
"name":"zhangsna"
}
}
通过DELETE命令实现删除,根据你的请求来判断是删除索引还是删除文档记录
DELETE /demo/user/1
查询demo索引下user类型name为tony11的文档。
主要是GET条件以及需要加上_search条件。
GET /demo/user/_search?q=name:tony11
GET /demo/user/_search
{
"query": {
"match": {
"name" : "zhang"
}
}
}
使用wildcard关键字,然后注意加上* 表示以ton开头的数据。
GET /demo/user/_search
{
"query": {
"wildcard": {
"name": "ton*"
}
}
}
如果不想要全部属性显示,可以指定查询部分属性。
GET /demo/user/_search
{
"query": {
"match": {
"name": "tony"
}
},
"_source": ["name","age"]
}
通过sort关键字实现。
GET /demo/user/_search
{
"query": {
"wildcard": {
"name": "ton*"
}
},
"sort": [
{
"age": {
"order": "asc"
}
}
]
}
通过form和size关键字实现。
GET /demo/user/_search
{
"query": {
"wildcard": {
"name": "ton*"
}
},
"sort": [
{
"age": {
"order": "asc"
}
}
],
"from": 0, //从第几个数据开始
"size": 1 //返回几条数据
}
所有的条件都需要匹配
GET /demo/user/_search
{
"query": {
"bool": {
"must": [
{
"match": {
"name": "tony"
}
},
{
"match": {
"age": "3"
}
}
]
}
}
}
类似 or ,满足任一条件即可。
类似 not ,查询年龄不是55岁的人。
通过filter关键字,我这查询的是年龄不是55岁并且小于10岁的。可以使用多个条件过滤。
过滤条件可以使用lte\get\lt\gt等。
GET /demo/user/_search
{
"query": {
"bool": {
"must_not": [
{
"match": {
"age": "55"
}
}
],
"filter": {
"range": {
"age": {
"lte": 10
}
}
}
}
}
}
之前插入数据的时候我们可以在tags中采取多条件匹配
查询渣只会出现一条渣男的数据。
这个时候在输入哥,就可以将有帅哥信息的数据查询出来,中间需要使用空格分隔。
term
查询是直接通过倒排索引指定的词条进程精确查找的。
所以查询的时候注意类型。
关于分词:
两个类型:
GET /demo/user/_search
{
"query": {
"term": {
"name": "tony"
}
}
}
GET /demo/user/_search
{
"query": {
"term": {
"name": "tony"
}
},
"highlight": {
"fields": {
"name":{
}
}
}
}
GET /demo/user/_search
{
"query": {
"term": {
"name": "tony"
}
},
"highlight": {
"pre_tags": ""
,
"post_tags": "",
"fields": {
"name":{
}
}
}
}