一、索引操作
- 建立名为“demo”的索引,为分片数与副本数配置默认值
PUT /demo
DELETE /demo
- 建立“demo”索引同时,设置分片数(number_of_shards)为1,副本数(number_of_replicas)为0
PUT /demo
{
"settings": {
"number_of_shards" : 1,
"number_of_replicas" : 0
}
}
- 修改“demo”副本数(number_of_replicas)
PUT /demo/_settings
{
"settings":
{
"number_of_replicas":1
}
}
GET /demo/_settings
GET /_all/_settings
- 建立“demo”索引同时,设置索引结构(mapping)
"demo"索引中存放类型“type-a”,“type-a”类型中包含两个字段分别是,数据类型为“text”、分词器为“ik_smart”的字段“info-a”,数据类型为“integer”的字段“info-b”
PUT /demo
{
"mappings": {
"type-a":{
"properties":{
"info-a":{
"type":"text",
"analyzer":"ik_smart"
},
"info-b":{
"type":"integer"
}
}
}
}
}
GET /demo/_mapping
二、类型操作
- 向“demo”索引中插入一条“type-a”,指定id为1
PUT /demo/type-a/1
{
"info-a":"a",
"info-b":1
}
- 使用POST,向“demo”索引中插入一条“type-a”,自动生成id
POST /demo/type-a
{
"info-a":"a",
"info-b":1
}
DELETE /demo/type-a/1
POST /demo/type-a/1/_update
{
"doc": {
"info-a":"b"
}
}
三、查询语句
GET /demo/type-a/1
GET /demo/type-a/_search
- 模糊查询“type-a”中“info-a”带有“a”的文本
GET /demo/type-a/_search
{
"query": {
"match": {
"info-a":"a"
}
}
}
- 模糊查询“type-a”中“info-a”带有“a”或“b”分词的文本
(match通过分词器将“a b”分为“a”、“b”再进行查询)
GET /demo/type-a/_search
{
"query": {
"match": {
"info-a":"a b"
}
}
}
- 模糊查询“type-a”中“info-a”带有“a”和“b”分词的文本
GET /demo/type-a/_search
{
"query": {
"match_phrase": {
"info-a":"a b"
}
}
}
- 精确查询“type-a”中“info-a”带有“a b”分词的文本
(事实上可能出现这种情况,文档的“info-a”字段值为“a b”,存在“a”、“b”分词,但“a b”分词却不存在,无法查到结果)
GET /demo/type-a/_search
{
"query": {
"term": {
"info-a":"a b"
}
}
}
- 精确查询“type-a”中“info-a”带有“a b”分词的文本
(事实上可能出现这种情况,文档的“info-a”字段值为“a b”,存在“a”、“b”分词,但“a b”分词却不存在,无法查到结果)
GET /demo/type-a/_search
{
"query": {
"term": {
"info-a":"a b"
}
}
}
- 范围查询“type-a”中“info-b”大于等于1、小于9的文本
(gt:大于、gte:大于等于、lt:小于、lte:小于等于)
GET /demo/type-a/_search
{
"query": {
"range": {
"info-b":{
"gte":1,
"lt":9
}
}
}
}
四、多条件查询、分页
- 查询满足多个条件的文档,“must”内可编写“match”、“term”、“range”条件数组(下同)
GET /demo/type-a/_search
{
"query": {
"bool": {
"must": [
{
"match": {...}
},
{
"term": {...}
},
{
"range": {...}
}
]
}
}
}
GET /demo/type-a/_search
{
"query": {
"bool": {
"must_not": [...]
}
}
}
- 为满足多个条件的文档增加“score”,影响结果顺序,不会影响结果集
GET /demo/type-a/_search
{
"query": {
"bool": {
"should": [...]
}
}
}
- 过滤结果,满足“filter”条件的文档会被保留并返回
GET /demo/type-a/_search
{
"query": {
"bool": {
"filter": [...]
}
}
}
GET /demo/type-a/_search
{
"query": {
"bool": {
"must": [...],
"must_not": [...],
"should": [...],
"filter": [...]
}
}
}
GET /demo/type-a/_search
{
"from": 0,
"size": 10,
"query": {...}
}
网友评论