elasticsearch

1.1Elasticsearch

索引

1.11创建索引

PUT /索引库名称
{
	"settings": {
        "number_of_shards": 3, //分片数量
        "number_of_replicas": 2 //副本数量
    }
}

1.12查看索引

GET /索引名称

1.13删除索引

delete /索引名称

映射

2.11创建映射

PUT /索引名称/_mapping/类型名称

{
	"properties":{
		"字段名":{
		"type":"类型",
		"index":true,
		"store":true,
		"analyzer":"分词器"
		}
	}
}

type:类型,可以是text、long、short、date、integer、object等

  • String 分为2中 keyword和text keyword不可分词可参与聚合,text可分词,不可参与聚合
  • Numerical:数值类型,分两类
    • 基本数据类型:long、interger、short、byte、double、float、half_float
    • 浮点数的高精度类型:scaled_float
      • 需要指定一个精度因子,比如10或100。elasticsearch会把真实值乘以这个因子后存储,取出时再还原。
  • Date:日期类型
    elasticsearch可以对日期格式化为字符串存储,但是建议我们存储为毫秒值,存储为long,节省空间

index:是否索引,默认为true。index的默认值就是true,也就是说你不进行任何配置,所有字段都会被索引。

store:是否存储,默认为false,如果设置store为true,就会在_source以外额外存储一份数据,多余,因此一般我们都会将store设置为false,事实上,**store的默认值就是false

analyzer:分词器,这里的ik_max_word即使用ik分词器

2.12查看映射

GET /索引名称/_mapping

2.13新增数据(自动分配id)

POST /索引名称/数据名称
{
	"key":"value"
}
例如:
POST /test/clazz
{
	"title":"1901",
}
手动指定id
POST /test/clazzz/1
{
	key:value
}

2.14删除数据

DELETE /索引库名称/id

删除所有

POST /索引库/数据名称/_delete_by_query
{
	"query": {
		"match_all":{}
	}
}

查询

3.11.基本查询

GET /索引库名称/_search
{
	"查询类型":{
		"查询条件":"查询条件值"
	}
}

查询类型:match_all (查询所有),match(匹配查询),term,terms,range

and关系

GET /索引库/_search
{
	"query":{
		"match":{
			"title":"apple",
			operator:"and",
			minimum_should_match:75%
		}
	}
}

match 查询支持 minimum_should_match 最小匹配参数, 这让我们可以指定必须匹配的词项数用来表示一个文档是否相关。我们可以将其设置为某个具体数字,更常用的做法是将其设置为一个百分数,因为我们无法控制用户搜索时输入的单词数量:

多字段查询(multi_match)

GET /test/_search
{
	"multi_match": {
		"query":"",
		"field":["title","image","key"]
	}
}

词条匹配(term)

GET /test/_search
{
	"query":{
		"term":{
			price:1999
		}
		#多词条匹配
		"terms":{
			price:["500","1000","2000"]
		}
	}
}

结果过滤:(_source)

GET /test/_search
{
	"srouce":["image","title"],#只显示image和title2个类字段的结果
	"query":{
		"match":{
			"title":"最好"
		}
	}
}

指定includes和excludes

  • includes:来指定想要显示的字段

  • excludes:来指定不想要显示的字段

    GET /test/_search
    {
    “source”:{
    “excludes”:[“title”]//不包含title字段
    }
    }

4.高级查询

4.11布尔组合(bool)

bool把各种其它查询通过must(与)、must_not(非)、should(或)的方式进行组合

例如:

GET /cars/_search
{
  "query": {
      "bool":{
          "should": [
               {
                "term": {
                  "price": {
                    "value": "80000"
                  }
                }
              },
              {"range": {
                "price": {
                  "gte": 10000,
                  "lte": 20000
                }
              }
            }
            ]
          }
      }
  }

4.12范围查询(range)

GET /test/_search
{
	"query":{
		"range":{
			"price":{
				"gt":200,
				"lt":1000
			}
		}
	}
}

操作符 说明
gt 大于
gte 大于等于
lt 小于
lte 小于等于

4.13:模糊查询(fuzzy)

GET /test/_search
{
	"query":{
		"fuzzy":{
			"title":"appla"
		}
	}
}

条件查询中进行过滤

所有的查询都会影响到文档的评分及排名。如果我们需要在查询结果中进行过滤,并且不希望过滤条件影响评分,那么就不要把过滤条件作为查询条件来用。而是使用filter方式:

GET /heima/_search
{
    "query":{
        "bool":{
        	"must":{ "match": { "title": "小米手机" }},
        	"filter":{
                "range":{"price":{"gt":2000.00,"lt":3800.00}}
        	}
        }
    }
}

注意:filter中还可以再次进行bool组合条件过滤。

4.15排序

GET /test/_search
{
	"query":{
		"match":{
			"title":"must"
		}
	},
	"sort":{
		"price":{
			"order":"desc"
		}
	}
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值