1.创建索引,设置列类型
特殊查询API记录:
存在一些版本偏差,自己找对应的文档:
场景一:电子商城,我们会根据用户输入的内容去查询,然后把score高的内容优先展示,但是当我们加上价格之后,我们的目的是即想让商品按照价格排序,又想让商品的匹配度从高到低去排序。可以用:QueryBuilders.matchPhraseQuery
PUT /recruit
{
"mappings": {
"properties": {
"name": {
"type": "text"
},
"age":{
"type": "integer"
},
"birthday":{
"type": "date"
}
}
}
}
2.获取索引数据
GET recruit
3.插入数据
PUT /recruit/_doc/1
{
"name": "史林伟",
"age": 25,
"birthday": "1997-08-19"
}
4.查看es的健康值
GET _cat/health
5.查询所有的信息
GET _cat/indices?v
6.修改数据 version会递增,result也会改变
# 修改数据的第一种方式不建议这样去做,因为这是覆盖的做法
POST /recruit/_doc/1/_update
{
"doc":{
"name": "slw",
"age": 27,
"birthday": "1997-08-19"
}
}
# 可以用post去更新数据,这样可以做到只更新json中的一条数据
POST userdata/_update/1
{
"doc":{
"name": "张三1"
}
}
7.删除数据,根据请求路径去处理,删除数据或者删除索引
DELETE /recruit/_doc/1
8.查询
# 根据id获取数据
GET userdata/_doc/1
# 模糊查询
GET userdata/_search?q=name:张三
# 1. 模糊查询
GET userdata/_search
{
"query": {
"match": {
"name": "张三"
}
}
}
#2.指定es返回的字端
GET userdata/_search
{
"query": {
"match": {
"name": "张三"
}
},
"_source": ["name","age"]
}
#3. 排序
GET userdata/_search
{
"query": {
"match": {
"name": "张三"
}
},
"_source": ["name","age"],
"sort": [
{
"age": {
"order": "asc"
}
}
]
}
# 4. 分页查询 from:从第几条开始查询,size:查询多少条
GET userdata/_search
{
"query": {
"match": {
"name": "张三"
}
},
"_source": ["name","age"],
"sort": [
{
"age": {
"order": "asc"
}
}
],
"from": 0,
"size": 1
}
# 5.多条件查询
# must(and) 所有条件都要满足
# should(or) 只要满足其中一个即可
# must_not(not) 必须不满足这些条件
GET userdata/_search
{
"query": {
"bool": {
"must_not": [
{
"match": {
"name": "张三"
}
},
{
"match": {
"age": 24
}
}
]
}
}
}
# 6. 过滤器 filter,可以写范围查询
GET userdata/_search
{
"query": {
"bool": {
"filter": [
{
"range": {
"age": {
"gte": 20,
"lte": 23
}
}
}
]
}
}
}
# 7.多条件匹配 , 多个条件使用空格隔开,只要满足其中之一就行,可以通过score去进行基本判断
GET userdata/_search
{
"query": {
"match": {
"tags": "车 男"
}
}
}
# 8.精确查询:倒排索引查询(其实就是利用term api的不会拆分搜索词的原因进行的查询)
# query和term的区别:term不会被拆分搜索词、query会拆分搜索词
# 关于分词器的几种不同分析方式
# 1.keyword 不会被分词器解析成多个片段
# 2.stabdard 这个是普通模式,就是按照分词器字典去正常分析就行
GET userdata/_search
{
"query": {
"term": {
"name": "张"
}
}
}
GET _analyze
{
"analyzer": "standard",
"text": "我是张三"
}
# 多条件精确查询
GET userdata/_search
{
"query": {
"bool": {
"should": [
{
"term": {
"age": 23
}
},
{
"term": {
"age": 28
}
}
]
}
}
}
# 高亮查询
GET java_2/_search
{
"query": {
"match": {
"name": "张"
}
},
"highlight": {
"fields": {
"name": {
"pre_tags": "<p class='key' stye='red'>",
"post_tags": "</p>"
}
}
}
}
网友评论