Must 里面的都得成立

should里面的成立一个即可,若should里面只有一个,那么就用这一个的条件

term 精确匹配,不会分词

match_phrase 精确匹配

​ 会分词,一般是按照空格分

​ 目标文档包含,分词后的所有词

​ 文档彼此位于相同的位置

使用boost的场景,term、range、boost

Range gt、le 大于小于 y M w d h H m s

script脚本操作

//doc['price']
GET /mall/product/_search
{
  "query": {
    "script": {
      "script": {
        "inline": "doc['price'].value > params.num",
        "params": {"num": 25}
      }
    }
  }
}
//ctx._source
POST /mall/product/3/_update
{
  "script": {
    "inline": "ctx._source.price = params.num",
    "params": {"num": 40}
  }
}

PUT /lulog/doc/2
{
  "log_size": 2
}

POST /lulog/doc/_search
{
  "query": {
    "match_all": {}
  },
  "script_fields": {
    "total_size": {
      "script": {
        "inline": "int total=0;for(int i=0; i<doc['log_size'].length;i++){total += doc['log_size'][i];}return total"
      }
    }
  }
}

POST /lulog/doc/_search
{
  "query": {
    "match_all": {}
  },
  "script_fields": {
    "count": {
      "script": {
        "inline": "return doc['log_size'].value + 1"
      }
    }
  }
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53

聚合:

Metric统计,min、max、sum、avg、stats、extended_stats

Bucket分类,terms,range,date_range,histogram,date_histogram,filter过滤

Pipeline对bucket分类的进行统计,min_bucket,max_bucket,sum_bucket,avg_bucket,stats_bucket,extended_stats_bucket

Matrix计算两个数值型字段之间的关系

GET incall_daily-2020.04.24/doc/_search
{
  "aggs": {
    "asdjhasd": {
      "matrix_stats": {
        "fields": ["applause_count", "answer_count"]
      }
    }
  }
}
{
	"name": "applause_count",	//字段名称
	"count": 154,	//字段样本数量
	"mean": 44.31818181818182,	//平均值
	"variance": 276.04842543077837,	//方差,偏离平均值的程度
	"skewness": -1.60794152400977,	//偏度,在平均值附近的非对称分布情况的量化
	"kurtosis": 5.006387495325678,	//峰度,分布的形状的量化
	"covariance": {	//协方差,描述一个字段数据随另一个字段数据变化程度的矩阵
		"applause_count": 276.04842543077837,
		"answer_count": 290.8722519310755
	},
	"correlation": {	//相关性,描述两个字段数据之间的分布关系,其协方差矩阵取值为[-1, 1]
		"applause_count": 1.0,
		"answer_count": 0.9397723506362066
	}
}, {
	"name": "answer_count",
	"count": 154,
	"mean": 53.48051948051948,
	"variance": 347.035565741448,
	"skewness": -2.2011119165278625,
	"kurtosis": 6.583666847748493,
	"covariance": {
		"applause_count": 290.8722519310755,
		"answer_count": 347.035565741448
	},
	"correlation": {
		"applause_count": 0.9397723506362066,
		"answer_count": 1.0
	}
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41

如果是聚合,需要过滤数据,建议使用filter,不要使用query

为啥?filter 只会匹配文档是不是我要的,query匹配好之后,还多了一个相关性算分的过程,因此filter效率更高

GET incall_daily*/doc/_search
{
  "query": {
    "bool": {
      "must": [
        {
          "match": {
            "parent_id": "17871"
          }
        }
      ]
    }
  }, 
  "aggs": {
    "a1": {
      "date_histogram": {
        "field": "create_time",
        "interval": "2d"
       },
       "aggs": {
         "a2": {
           "stats": {
             "field": "applause_count"
           }
         }
       }
    }
  }
}
GET incall_daily-2020.04.24/doc/_search
{
  "aggs": {
    "f1": {
      "filter": {
        "term": {
          "user_id": "17871"
        }
      },
      "aggs": {
        "a1": {
          "date_histogram": {
            "field": "create_time",
            "interval": "2d"
          },
          "aggs": {
            "a2": {
              "terms": {
                "field": "applause_count"
              }
            }
          }
        }
      }
    }
  }
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56

# 二、查询篇

# 1、

# 1、高亮查询

GET callcenter/_search
{
  "query": {
    "match": {
      "content": "天翼"
    }
  },
  "size": 30,
  "highlight": {
    "pre_tags": "<span>", 
    "post_tags": "</span>", 
    "fields": {
      "content": {
        "fragment_size": 20,			//从content内容的前20个字来找高亮字段
      }
    }
  }
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18

# 2、查询字符串查询

query_string,只有 AND OR,且必须是大写
simple_query_string,+与 |或 -非 () * 

GET /callcenter/_search
{
  "query": {
    "query_string": {
      "fields": ["title", "content"], 
      "query": "天翼 AND (骚扰 OR 商务)"
    }
  }
}
GET /callcenter/_search
{
  "query": {
    "query_string": {
      "fields": ["title", "content"], 
      "query": "(商务 OR 直播) AND 商务"
    }
  }
}

GET callcenter/_search
{
  "query": {
    "simple_query_string": {
      "query": "-商务 + -工号 + -外勤 + -网吧 + -天翼",
      "fields": ["title"]
    }
  }
}

相关性
GET callcenter/_search
{
  "query": {
    "boosting": {
      "positive": {
        "match": {
          "content": "天翼商务"
        }
      },
      "negative": {
        "match": {
          "content": "商务"
        }
      },
      "negative_boost": 0.2
    }
  },
  "size": 50
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52

# 3、复合查询

该查询实现和上面的查询一样的效果,看得出,代码写的贼麻烦

GET callcenter/_search
{
  "query": {
    "bool": {
      "must": [
        {
          "bool": {
            "must_not": [
              {"match": {"title": "商务"}},
              {"match": {"title": "工号"}},
              {"match": {"title": "外勤"}},
              {"match": {"title": "网吧"}},
              {"match": {"title": "天翼"}}
            ]
          }
        },
        {
          "bool": {
            "must_not": [
              {"match": {"content": "商务"}},
              {"match": {"content": "工号"}},
              {"match": {"content": "外勤"}},
              {"match": {"content": "网吧"}},
              {"match": {"content": "天翼"}}
            ]
          }
        }
      ]
    }
  }
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33

# 4、精确查找


GET callcenter/_search
{
  "query": {
    "term": {
      "title": {
        "value": "商务"
      }
    }
  }
}
GET callcenter/_search
{
  "query": {
    "match_phrase": {
      "title": "商务"
    }
  }
}
GET callcenter/_search
{
  "query": {
    "terms": {
      "title": [
        "电信",
        "号码"
      ]
    }
  }
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30

# 5、分页查询

GET article/_search
{
  "query": {
    "match_all": {}
  },
  "sort": [
    {
      "date": {
        "order": "desc"
      }
    }
  ],
  "from": 20, 
  "size": 20
}

滚动翻页
GET article/_search?scroll=1m
{
  "query": {
    "match_all": {}
  },
  "sort": [
    {
      "date": {
        "order": "desc"
      }
    }
  ], 
  "size": 10
}
GET _search/scroll
{
  "scroll": "1m",
  "scroll_id": "DnF1ZXJ5VGhlbkZldGNoBQAAAAAABdUMFk5uSzVIbGRuU1FTb1RoT0x5dTVyM2cAAAAAAAXVDRZObks1SGxkblNRU29UaE9MeXU1cjNnAAAAAAAF1Q4WTm5LNUhsZG5TUVNvVGhPTHl1NXIzZwAAAAAABdUPFk5uSzVIbGRuU1FTb1RoT0x5dTVyM2cAAAAAAAXVEBZObks1SGxkblNRU29UaE9MeXU1cjNn"
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36

# 6、聚合查询

GET incall_daily-2020.04.24/_search
{
  "aggs": {
    "f": {
      "range": {
        "field": "create_time",
        "ranges": [
          {
            "from": "2020-04-23T00:00:00.000Z"
          }
        ]
      }, 
      "aggs": {
          "d1": {
            "date_histogram": {
              "field": "create_time",
              "interval": "1d",
              "order": {
                "_key": "desc"
              }
            },
            "aggs": {
              "d2": {
                "terms": {
                  "field": "order_type.keyword",
                  "order": {
                    "d3": "desc"
                  }
                },
                "aggs": {
                  "d3": {
                    "sum": {
                      "field": "answer_count"
                    }
                  }
                }
              }
            }
          }
        }
    }
  }
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43

# 7、建议查询

精准程度上(Precision)看: Completion >  Phrase > term
速度上,Completion是最快的

自动补全设计:优先取Completion,依次...

POST /lu_article/_search
{
  "_source": ["title", "descript", "create_time"],
  "suggest": {
    "s1": {
      "prefix": "cento",
      "completion": {
        "field": "suggest",
        "fuzzy": {
          
        }
      }
    },
    "s2": {
      "text": "elasticseqrch mybatls mysal",
      "phrase": {
        "field": "descript",
        "highlight": {
          "pre_tag": "<em>",
          "post_tag": "</em>"
        }
      }
    },
    "s3": {
      "text": "elasticseqrch mybatls mysal",
      "term": {
        "field": "descript"
      }
    }
  }
}


##completion创建字段,插入值,自动补全,suggest可以是字符串、对象、数组,weight选填
"suggest": {
	"type": "completion",
  "analyzer": "ik_max_word"
 },
 PUT /lu_article/_doc/1
{
  "suggest": [
    {
      "input": "lucene solr",
      "weight": 1
    },
    {
      "input": "lucene so cool",
      "weight": 4
    },
    {
      "input": "lucene elasticsearch",
      "weight": 3
    }
  ]
}
POST /lu_article/_search
{
  "_source": ["title", "descript", "create_time", "suggest"],
  "suggest": {
    "s1": {
      "prefix": "luce",
      "completion": {
        "field": "suggest"
      }
    }
  }
}
          
          
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
更新时间: 9/21/2023, 7:24:27 PM