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"
}
}
}
}
ElasticSearch查询
最新推荐文章于 2022-10-31 11:09:03 发布