elasticsearch

https://zhuanlan.zhihu.com/p/524128889

  • 索引 (indices ):类似于我们的关系型数据库
  • 类型(type ):类似于数据库的表结构
  • 文档(Document ):类似于数据库表中的行,也就是具体的数据
  • 字段(Field ):雷雨时数据库表中的列
  • es5 版本:允许一个索引库下中可以创建多个类型
  • es6 版本:一个索引库下中只能创建一种类型
  • es7 版本:一个索引库不支持显式创建类型,当创建索引的时候,默认会创建一个名称为_doc的类型

因为一个索引库下,如果多个类型,会存在搜索问题,比如,类型 A 下某个字段order_source是一个long型;类型 B 下,字段order_source是一个text型。

这两个字段名称都是一样,实际存入 Lucene 中,也是同一个字段,但是他们的字段类型是不一样的,要么是long型,要么是text型,只会是其中一个,这就造成一个问题,类型 A 中order_source字段不可用,或者类型 B 中order_source字段不可用。

  • 多条件查询
{ "query":{ "bool":{ "must":[ { "match":{ "name":"张" } }, { "match":{ "sex:"男" } } ] } } }
{ "query":{ "bool":{ "should":[ { "match":{ "name":"张" } }, { "match":{ "sex:"男" } } ] } } }
{ "query":{ "bool":{ "filter":{ "range":{ "age":{ "gt" : 25, "lt" : 50 } } } } } }
  • 聚合查询
{ "aggs":{ "age_group":{ "terms":{ "field":"age" } } }, "size" : 0 }
{ "aggs" : { //聚合操作 "age_avf" : { //名称,自定义 "avg" : { //分组 "field" : "age" //分组字段 } } }, "size" : 0 }



  • 排序
{ "query" : { "match_all" : { } }, "sort" : { "_id":{ "order" : "asc" } } }
  • 查询指定列
{
   "query" : {
       "match_all" : {

       }
   },
   "_source" : ["name","sex"]
}



posted @ 2022-07-21 16:49  15375357604  阅读(27)  评论(0编辑  收藏  举报