在kibana中对Elasticsearch进行数据的增删改查

索引和类型的创建:
在创建索引的时候,我们会一起创建类型,且索引和类型创建完成后无法进行修改,所以才创建的时候需要注意
语法规则:

 put /sec_01
         {
                  "settings":{
		"number_of_shards": 3,
			"number_of_replicas": 2
	         },
	  "mappings":{
		"type 名称":{
			"properties":{
				"字段 1 名称":{
					"type":"字段 1 类型",
					"analyzer":"分词器类型"
					},
				"字段 2 名称":{
					"type":"字段 2 类型"
					"analyzer":"分词器类型" 
					} 
				}
			}
		}
	}

修改文档:修改文档时,只需要改变文档的值就可以了,属性名不能改变,否则的话进是添加文档了,语法规则:与新增文档一样,只是修改时吧原来的数据替换掉了
删除文档:类型名创建是与索引一起创建的,所以在删除文档时必须跟id,不跟id的话是无法进行删除的,且无法删除类型名,语法规则:DELETE /索引名称/类型名称/文档 ID

DELETE sec_01/user/02

新增文档:新增文档没有语法要求,语法规则:PUT /索引名称/类型名称/文档 ID{“字段名”:“值”}
分词器的使用
分词器在ES中默认提供了四个,standard、simple、whitespace、language,同时可以进行手动设置分词器
指定索引、类型查询:按照指定的索引(index)、类型(type)进行数据查询
通过GET语句和_search语句获取,书写没有要求,语句规则:GET /索引名称/类型名称/_search

GET sec_01/user/_search

请求体查询:
请求体查询是使用的了单个或者多个查询子语句进行都数据的查询,标志为query,其类型有两种,一是过滤查询,二是匹配查询
过滤查询通常使用 filter+term 子句来实现(必须写在bool语句中)
匹配度查询通常使用 macth 子句实现(可书写在bool语句的子句中,也可直接使用)
bool语句的作用;
bool语句中包含了多个子语句,且同时每一个子语句中度可以嵌套其他的子语句
书写在bool中的语句相当于mysql中语句中的or,满足一个条件就可以获取到与条件匹配的数据
bool语句中的子语句;
must:文档中必须包含此内容才能获取匹配
must_not:文档中不包含此内容才能获取匹配
should:给每一个查询结果进行评分,没有则不响应
filter:过滤模式语句,对评分不影响只是相当与mysql中的where条件
注意:每一个bool字句必须与bool进混合使用,不能书写在bool语句外面
查询子句:
match:标准查询,可直接书写在query语句中,按匹配度进行排序结果,相当于mysql中的like模糊查询
term:精准查询,可直接书写在query语句中亦可用于 filter 子句,相当于mysql中的where条件查询,通常使用数字,时间等值作为条件,如果条模糊的,
也可获取的模糊情况下的数据与match一样
range:区域查询,类似于mysql中的大于、小于判断。range 查询可用于 query 子句,也可用于 filter 子句。gte大于等于、lte小于等于、gt大于、lt小于
注意:在使用使用混合查询时,必须在bool语句中添加bool的子句才能进行书写查询字句,不能直接套用

分页查询:分页查询类似于mysql中的limit,直接书写与query语句之前,使用from标注起始位置,size标注显示数据条数
设置请求时长:请求时长为在查询数据过大时,为了提高用户的体验度,通过设置请求时长,将一部分数据返回给前端,当用户再次发送请求时,再次没有
获取到的数据,通过设值timed_out:timed_out 值表示查询是否超时。默认情况下,搜索请求不会超时。
语句书写规则:GET /_search?timeout=超时时间(如 10ms)(timeout 常见类型有三种,分别为 ms(毫秒)、s(秒)、m(分钟))

查询所有数据和数据格式

    GET _search
    {
      "query": {
        "match_all": {}
      }
    }

创建索引

    PUT dmservice
    {
      "settings": {
        "number_of_shards": 5
        , "number_of_replicas": 0
      },
      "mappings": {
        "user":{
          "properties": {
            "name":{
              "type": "text"
            }
          }
        }
      }
    }

包含查询

 GET leon_01/_search
    {
      "query": {
        "match": {
            "name":"乔峰"
        }

添加数据

    PUT /sec_01/user/01
    {
      "name":"李师师 ",
      "age":"18"
    }

bool字句中的filter与term混合查询

    GET leon_01/user/_search
    {
      "query": {
        "bool": {
          "filter": {
            "term": {
              "sex": "0"
            }
          }
        }
      }
    }

match查询

    GET leon_01/user/_search
    {
      "query": {
        "match": {
          "name": "李"
        }
      }
    }
    

多条件的条件体查询

 GET leon_01/user/_search
    {
      "query": {
        "bool": {
          "must": [
            {
              "match": {
               "address":"D"
              }
            },
            {
             "match": {
                "name":"李"
             }
            }
          ],
          "filter": {
            "term": {
              "sex": "1"
            }
          }
        }
      }
    }

区域查询

GET leon_01/user/_search
{
  "query": {
    "bool": {
      "must": [
        {
          "range": {
            "age": {
              "gte": 10,
              "lte": 20
            }
          }
        }
      ]
    }
  }
}

多字句查询(例子中的查询语句类似于mysql中的or查询)查询北京或者上海的男生,年龄在10到20岁

    GET leon_01/user/_search
    {
      "query": {
        "bool": {
          "must": [
            {
              "range": {
                "age": {
                  "gte": 10,
                  "lte": 20
                }
              }
            },
            {
            "match": {
              "sex": "1"
            }
            },
            {
              "bool": {
                "should": [
                  {
                    "match": {
                      "address": "北京"
                    }
                  },
                  {
                    "match": {
                      "address": "上海"
                    }
                  }
                ]
              }
            }
          ]
        }
      }
    }

term:精准查询,可直接书写在query语句中,相当于mysql中的where条件查询

GET leon_01/user/_search
{
  "query": {
    "term": {
      "name": {
        "value": "李"
      }
    }
  }  
}

分词器的使用

GET _analyze
{
  "text": ["长沙经济开发区东十路南9号"],
  "analyzer": "ik_max_word"
}
GET hui_05/user/_search
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值