ElasticSearch查询

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

POST _analyze
{
  "analyzer": "ik_max_word",
  "text": "中国人民"
}

PUT /person
{
  "settings": {
    "number_of_shards": 5
    , "number_of_replicas": 1
  }
}

GET /person

PUT /book
{
  "settings": {
    "number_of_shards": 5,
    "number_of_replicas": 1
  },
  "mappings": {
    "novel":{
      "properties":{
        "name":{
          "type":"text",
          "analyzer":"ik_max_word",
          "index":true,
          "store":false
        },
        "author":{
          "type":"keyword"
        },
        "count":{
          "type":"long"
        },
        "on-sale":{
          "type":"date",
          "format":"yyyy-MM-dd HH:mm:ss||yyyy-MM-dd||epoch_millis"
        },
        "descr":{
          "type":"text",
          "analyzer":"ik_max_word"
        }
      }
    }
  }
}


#添加文档,自动生成id
POST /book/novel
{
  "name":"zs",
  "author":"lhl",
  "count":100000,
  "on-sale":"2020-2-26",
  "descr":"wasd"
}

#添加文档,手动指定id
PUT /book/novel/1
{
  "name":"红楼梦",
  "author":"曹雪芹",
  "count":1000,
  "on-sale":"1999-7-10",
  "descr":"拉萨的房间欧赔无法"
}

#覆盖式修改文档
PUT /book/novel/1
{
  "name":"红楼梦1",
  "author":"曹雪芹1",
  "count":10001,
  "on-sale":"1999-7-10"
}


#修改文档,基于doc方式

POST /book/novel/1/_update
{
  "doc":{
    "count":"6666"
  }
}

#根据id删除
DELETE /book/novel/1



#term查询   完全匹配  不会对搜索的关键字进行分词
POST /sms-logs-index/sms-logs-type/_search
{
  "from":0,
  "size": 5,
  "query":{
    "term": {
      "province": {
        "value": "北京"
      }
    }
  }
}

#terms查询  相当于  where  xxx in(a,b,c)
POST /sms-logs-index/sms-logs-type/_search
{
  "query": {
    "terms": {
      "province": [
        "北京",
        "上海"
      ]
    }
  }
}


#match_all查询   查询全部内容,不指定任何查询条件
POST /sms-logs-index/sms-logs-type/_search
{
  "query": {
    "match_all": {}
  }
}

#match查询 指定一个Field作为筛选的条件 会被分词
POST /sms-logs-index/sms-logs-type/_search
{
  "query": {
    "match": {
      "smsContent": "收货安装"
    }
  }
}

#布尔match查询 指定一个Field作为匹配的内容 会被分词 #采用and或者or的方式连接   
POST /sms-logs-index/sms-logs-type/_search
{
  "query": {
    "match": {
      "smsContent": {
        "query": "中国 健康",
        "operator": "and"
      }
    }
  }
}

POST /sms-logs-index/sms-logs-type/_search
{
  "query": {
    "match": {
      "smsContent": {
        "query": "中国 健康",
        "operator": "or"
      }
    }
  }
}

#multi_match查询  针对多个field做检索  多个field对应一个text
#即一个关键字在多个不同的域(属性)中查找
POST /sms-logs-index/sms-logs-type/_search
{
  "query": {
    "multi_match": {
      "query": "北京",
      "fields": ["province","smsContent"]
    }
  }
}


#其他查询   
#id查询
GET /sms-logs-index/sms-logs-type/21

#ids 查询  根据多个id查询 类似mysql中的where id in(id1,id2,id3)
POST /sms-logs-index/sms-logs-type/_search
{
  "query": {
    "ids": {
      "values": ["21","24","28"]
    }
  }
}

#prefix查询
POST /sms-logs-index/sms-logs-type/_search
{
  "query": {
    "prefix": {
      "corpName": {
        "value": "途虎"
      }
    }
  }
}


#fuzzy查询  模糊查询
#prefix_length表示前两个字是不能出错的
POST /sms-logs-index/sms-logs-type/_search
{
  "query": {
    "fuzzy": {
      "corpName": {
        "value": "盒马先生",
        "prefix_length": 2
      }
    }
  }
}


#wildcard查询 通配查询  和mysql中的like是一个套路
#可以在查询时,在字符串中指定通配符*和占位符?
POST /sms-logs-index/sms-logs-type/_search
{
  "query": {
    "wildcard": {
      "corpName": {
        "value": "中国*"
      }
    }
  }
}


#range查询  范围查询,只针对数值类型,对某一个Field进行大于或者小于的范围指定
## 可以使用 gt:>      gte:>=     lt:<     lte:<=

POST /sms-logs-index/sms-logs-type/_search
{
  "query": {
    "range": {
      "fee": {
        "gt": 5,
        "lt": 10
      }
    }
  }
}

#regexp查询 正则查询,通过你编写的正则表达式去匹配内容
POST /sms-logs-index/sms-logs-type/_search
{
  "query": {
    "regexp": {
      "mobile": "180[0-9]{8}"
    }
  }
}

#深分页scroll
# 执行scroll查询,返回第一页数据,并且将文档id信息存放在ES上下文中,指定生存时间1m
POST /sms-logs-index/sms-logs-type/_search?scroll=1m
{
  "query": {
    "match_all": {}
  }
  , "size": 2,
  "sort": [
    {
      "fee": {
        "order": "desc"
      }
    }
  ]
}

# 根据scroll查询下一页数据
POST /_search/scroll
{
  "scroll_id":"DnF1ZXJ5VGhlbkZldGNoAwAAAAAAAEV2FmE4dXRoZFMyUlF1dkVySWkxTjg4QUEAAAAAAABFeBZhOHV0aGRTMlJRdXZFcklpMU44OEFBAAAAAAAARXcWYTh1dGhkUzJSUXV2RXJJaTFOODhBQQ==",
  "scroll":"1m"
}

# 删除scroll在ES上下文中的数据
    DELETE /_search/scroll/DnF1ZXJ5VGhlbkZldGNoAwAAAAAAAEV2FmE4dXRoZFMyUlF1dkVySWkxTjg4QUEAAAAAAABFeBZhOHV0aGRTMlJRdXZFcklpMU44OEFBAAAAAAAARXcWYTh1dGhkUzJSUXV2RXJJaTFOODhBQQ==


#delete-by-query  删除查询到的数据
POST /sms-logs-index/sms-logs-type/_delete_by_query
{
  "query":{
    "range":{
      "fee":{
        "lt":4
      }
    }
  }
}

#bool查询 复合过滤器,将你的多个查询条件,以一定的逻辑组合在一起
#must:所有的条件,用must组合在一起,表示and的意思
#must_not:将must_not中的条件,全部都不能匹配,表示not的意思
#should:所有的条件,用should组合在一起,表示or的意思
# 查询省份为武汉或者北京
# 运营商不是联通
# smsContent中包含中国和平安
POST /sms-logs-index/sms-logs-type/_search
{
  "query": {
    "bool": {
      "should": [
        {
          "term": {
            "province": {
              "value": "北京"
            }
          }
        },
        {
          "term": {
            "province": {
              "value": "武汉"
            }
          }
        }
      ],
      "must_not": [
        {
          "term": {
            "operatorId": {
              "value": "2"
            }
          }
        }
      ],
      "must": [
        {
          "match": {
            "smsContent": "平安"
          }
        }
      ]
    }
  }
}


#boosting查询
#boosting查询可以帮助我们去影响查询后的score。

# positive:只有匹配上positive的查询的内容,才会被放到返回的结果集中。
# negative:如果匹配上和positive并且也匹配上了negative,就可以降低这样的文档score。
# negative_boost:指定系数,必须小于1.0  

#关于查询时,分数是如何计算的:

# 搜索的关键字在文档中出现的频次越高,分数就越高
# 指定的文档内容越短,分数就越高
# 我们在搜索时,指定的关键字也会被分词,这个被分词的内容,被分词库匹配的个数越多,分数越高

POST /sms-logs-index/sms-logs-type/_search
{
  "query": {
    "boosting": {
      "positive": {
        "match": {
          "smsContent": "收货安装"
        }
      },
      "negative": {
        "match": {
          "smsContent": "王五"
        }
      },
      "negative_boost": 0.2
    }
  }
}


#filter查询
#query,根据你的查询条件,去计算文档的匹配度得到一个分数,并且根据分数进行排序,不会做缓存的。

#filter,根据你的查询条件去查询文档,不去计算分数,而且filter会对经常被过滤的数据进行缓存。相比较于query速度更快一些
POST /sms-logs-index/sms-logs-type/_search
{
  "query": {
    "bool": {
      "filter": [
        {
          "term":{
            "corpName":"招商银行"
          }
        },
        {
          "term":{
            "province":"上海"
          }
        }
      ]
    }
  }
}


#高亮查询
#高亮查询就是你用户输入的关键字,以一定的特殊样式展示给用户,让用户知道为什么这个结果被检索出来。

#高亮展示的数据,本身就是文档中的一个Field,单独将Field以highlight的形式返回给你。

#ES提供了一个highlight属性,和query同级别的。

# fragment_size:指定高亮数据展示多少个字符回来。
# pre_tags:指定前缀标签,举个栗子< font color="red" >
# post_tags:指定后缀标签,举个栗子< /font >
# fields:指定哪几个Field以高亮形式返回


POST /sms-logs-index/sms-logs-type/_search
{
  "query": {
    "match": {
      "smsContent": "盒马"
    }
  },
  "highlight": {
    "fields": {
      "smsContent": {}
    },
    "pre_tags": "<font color='red'>",
    "post_tags": "</font>",
    "fragment_size":10
  }
}

#去重计数,即Cardinality,第一步先将返回的文档中的一个指定的field进行去重,统计一共有多少条


POST /sms-logs-index/sms-logs-type/_search
{
  "aggs":{
    "agg":{
      "cardinality": {
        "field": "province"
      }
    }
  }
}


#范围计数
POST /sms-logs-index/sms-logs-type/_search
{
  "aggs":{
    "agg":{
      "range": {
        "field": "fee",
        "ranges": [
          {
            "from": 5,
            "to": 10
          }
        ]
      }
    }
  }
}


#统计聚合查询
#他可以帮你查询指定Field的最大值,最小值,平均值,平方和等
#使用:extended_stats

POST /sms-logs-index/sms-logs-type/_search
{
  "aggs": {
    "agg": {
      "extended_stats": {
        "field": "fee"
      }
    }
  }
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值