最近项目有使用elasticSearch ,对于新知识为防止遗忘,也供新入手的朋友一个记录。特此将es 基本知识记录如下。
es 基本概念:索引(database),类型(table),文档(一行记录)。分片,备份。
es 基本查询(使用postman 操作)请求方式 post 加 localhost:9200/索引名/house/_search
//查询所有
{
"query":{
"match_all":{}
},
"from":1, // 从那条开始类似 sql start
"size":1 // 偏移量 类似sql limit
}
//查询关键词查询
{
"query":{
"match":{
"字段名称":"对应的value"
}
},
"sort":[
"需要排序的字段":{"order":"desc"}
]
}
//聚合查询(多个则为多字段聚合)
{
"aggs":{
"自定义聚合名称":{
"terms":{
"field":"聚合的字段"
}
},
"自定义聚合名称":{
"terms":{
"field":"聚合的字段"
}
}
}
}
复合查询:查询 post 方法
//换成习语匹配则将match改为match_pharse(则只会查包含 elasticSearch入门 的数据)
{
"query":{
"match":{
"需要查询的字段":"elasticSearch入门" //此处为模糊匹配 该字段有elasticSearch/入门 的都会查出来
}
}
}
//文本查询
{
"query":{
"query_String":{
"query":"关键词 and 关键词", //可以使用 or and 等不同的词
"fields":["字段一","字段二"] //查询字段中含有关键词的数据
}
}
}
// 结构化数据的查询
{
"query":{
"term":{
"字段名":"值"
}
}
}
//范围查询
{
"query":{
"range":{
"字段名称":{
"gte": 1000, //>= 去掉e 则为>
"lte":2000 // <=
}
}
}
}
//filter 查询 和query 的区别 filter 不会没有结果匹配度的字段,类似于sql 的 =
{
"query":{
"bool":{
"filter":{ // filter 需要和 bool 查询结合起来 filter 数据es 会给他做缓存
"term":{
"字段":"值"
}
}
}
}
}
//es 复合查询 should 为 或的关系
{
"query":{
"bool":{
"should":[ //将should 改为must 则为与的关系
{
"match":{
"字段名称":"值"
}
},
{
"match":{
"字段名称":"值"
}
}
],
"filter":[
{
"term":{
"字段":"值"
}
}
]
}
}
}