es 的 query 的匹配和 sql 里的区别:用 _score 来标识匹配程度有多好(而 sql 则是要么匹配,要么不匹配,即使是模糊查询也是)
字条件查询是什么
高级查询
子条件查询 :特定字段查询所指特定值
复合条件查询:以一定得逻辑组合子条件查询
Query Context
在查询过程中,除了判断文档是否满足查询条件外,es还会计算一个_score来标识匹配得程度,指在判断目标文档和查询条件匹配得有多好.
全文本查询:针对文本类型数据
模糊匹配得
{
"query": {
"match": {
"fields.deviceIp": "172.11.49.35"
}
}
}
字段级别查询:针对结构化数据,如数字、日期等
全文本查询使用
模糊匹配:
query->match ->"field"
习语匹配:
query->match_phrase->"field"
多字段模糊匹配:
query->multi_match->{query:"key",fields:["field1","field2"]}
query_string:
query->query_string->{query:"key1 AND key2 OR key3",fields:["field1","field2"]}
范围查询:
query->range->"field"->{"gte","lte"}
结构化查询:
query->term->"field":"value"
查询语句:
query->query_string->{query: "xx AND xxx",fields:["field1","field2"]}
模糊匹配:
query->match ->"field"
习语匹配:
query->match_phrase->"field"
多字段模糊匹配:
query->multi_match->{query:"key",fields:["field1","field2"]}
字段级别的查询(跟文本查询对应)
range
字段级别的查询:
term,range...
query_string
现在必须在指定field里查
query_string
要求:要么同时有ES和大法,要么有python
多字段field匹配 multi_match
Query Context分类
Query Context定义
ES的高级查询ES
Query 查询 range,日期范围查询
Query 查询 range,范围查询
Query 查询 term,字段查询
Query 查询 query_string,语法查询
Query 查询 multi_match,多字段匹配查询
Query 查询 match_phrase,习语匹配
Query 查询 match
Query Context 常用查询
Query Context
子条件查询分类
高级查询分类
ES的RESTFul API的基本格式:http://<ip>:<port>/<索引名>/<类型名>/<文档id>
常用的HTTP动词:GET/PUT/POST/DELETE
非结构化索引的属性mappings下为空
ES在postman中创建结构化索引:
在连接框选择PUT输入:ip:port/索引名
在Body中选择raw选择JSON格式输入:
{
"settions":{
"number_of_shards":3,
"分片数":"",
"number_of_replicas":0,
"备份数":""
},
"mappings":{
"类型名1":{
"properties":{
"字段名":{
"type":"字段类型 如:text、keyword、integer"
},
"date":{
"type":"date",
"format":"yyyy-MM-dd HH:mm:ss||其他时间格式||epoch_millis(时间戳)"
}
}
},
"类型名2":{
"properties":{
"字段名":{
"type":"字段类型 如:text、keyword、integer"
},
"date":{
"type":"date",
"format":"yyyy-MM-dd HH:mm:ss||其他时间格式||epoch_millis(时间戳)"
}
}
}
}
}
指定文档修改选中POST:ip:port/索引名/类型名/文档id/_updata
{
“doc”:{
“要修改的字段名”:”新内容”
}
}
指定索引查询选中POST:ip:port/索引名/ _search
{
"query":{
"match_all":{}
},
"from":1,//从第几个开始
"size":1//查询出几个
}
指定条件查询选中POST:ip:port/索引名/ _search
{
"query":{
"match":{
"字段名":"查询内容"
}
}
}
指定条件并指定排序查询选中POST:ip:port/索引名/ _search
{
"query":{
"match":{
"字段名":"查询内容"
}
},
"sort":[
{
"指定字段名":{"order":"desc"}//倒序
"指定字段名":{}//正序
}
]
}
聚合查询选中POST:ip:port/索引名/ _search
{
"aggs":{
"给聚合后的字段起名":{
"terms":{
"field":"要聚合的字段"
}
},
"给聚合后的字段起名1":{
"terms":{
"field":"要聚合的字段"
}
}
}
}
对索引下的字段进行统计计算查询选中POST:ip:port/索引名/ _search
{
"aggs":{
"给统计计算后的字段起名":{
"stats":{//stats可替换为指定的函数count 、min、max、avg、sum
"field":"要统计计算的字段"
}
}
}
}
模糊查询选中POST:ip:port/索引名/ _search
{
"query":{
"multi_match”:{
"query":"查询内容"
“fields”:[”字段”,”字段”,……]
}
}
}
{
"query_string":{
"query":"(a AND b) OR c"
}
}
{
"query_string":{
"query":"(a AND b) OR c"
“fields”:[”字段”,”字段”,……]
}
}
now可以作为一个关键词
子查询——Query Context