目录

ES查询操作

match查询

ES索引操作

创建索引

ES添加修改操作

添加操作

修改操作

ES删除操作

删除索引

删除document


es概述:Es搜索引擎概述和语句案例_派大猩9527的博客-CSDN博客

ES查询操作

精确查找(全词匹配)

term查询不会对查询语句进行分词,而是精确的去匹配结构化数据中的字段值。

GET /索引名/_search
{
  "query": {
    "term": {
          "id": 67
    }
  }
}

精确查找多个值(全词匹配)

GET /索引名/_search
{
  "query": {
    "terms": {
      "id": [
        67,
        68
      ]
    }
  }
}

范围查询 range

GET /索引名/_search
{
  "query": {
    "range": {
      "last_loading_time": {
        "gte": "2022-02-15",
        "lte": "2022-02-17"
      }
    }
  }
}

geo_distance半径查询

GET /索引名/_search
{
  "query": {
    "geo_distance": {
      "distance": "30km",
      "索引字段名": {
         "lon" : 120.126629,
         "lat" : 31.799108
      }
    }
  },

#排序
  "sort": [
    {
       "_geo_distance": {
        "索引字段名": {
          "lon" : 120.126629,
           "lat" : 31.799108
          },
        "order":         "asc",
        "unit":          "km"
      }
    }
  ]
}

match查询

match查询知道分词器的存在,会对field进行分词操作,然后再查询。

match_all (查询索引全部数据)

GET /索引名/_search
{
  "query": {
    "match_all": {}
  }
}

示例:

返回:

查询默认最大显示 一万条,如果要total.value显示当前索引的全部文档数需要加下列条件

"track_total_hits": true

示例:

返回显示:

match查询

举个例子,你可以使用 match 查询语句 来查询 tweet 字段中包含 elasticsearch 的 tweet,所有有关"elasticsearch ", 那么所有包含这个词中的一个或多个的文档就会被搜索出来。并且根据lucene的评分机制(TF/IDF)来进行评分。对Text类型字段,索引时会进行分词,大写字母会转成小写等,一般都用match搜索。

查询附带字段:

operator:匹配条件类型,有两个值,and:条件分词后都要匹配,or:条件分词后有一个匹配即可(默认)。

minmum_should_match:指定最小匹配的数量。

GET /索引名/_search
{
  "query": {
    "match": {
        "tweet": "elasticsearch "
    }
  }
}

match查询多个字段

GET /bank/_search
{    "query": {     "must": [{   "match": {   "title": "Search"   }  },  {   "match": {   "content": "Elasticsearch"   }  }]}
}

match_phrase查询

match_phrase查询首先解析查询字符串来产生一个词条列表。然后会搜索所有的词条,但只保留包含了所有搜索词条的文档,并且词条的位置要邻接。

GET /索引名/_search
{
  "query": {
    "match_phrase": {
      "name": {
        "query": "lonely wolf"
      }
    }
  }
}

要完全匹配“lonely wolf”的文档才会被搜索出来。这种比较严格,可以用slop来调节,slop值越大,搜索的顺序可以忽略不计。ElasticSearch中一般情况下如果不希望被分词可以使用match_phrase进行搜索。

multi_match查询

es中如果我们希望两个字段进行匹配,其中一个字段有这个文档就满足的话,使用multi_match。multi_match多匹配查询的类型有多种,其中的三种: best_fields 、 most_fields 和 cross_fields (最佳字段、多数字段、跨字段)。默认情况下,查询的类型是 best_fields 。

可设置参数:

tie_breaker:在0~1之间,是个小数,在于说,将其他query的分数,乘以tie_breaker,然后综合与最高分数的那个query的分数,综合在一起进行计算,除了取最高分以外,还会考虑其他的query的分数。

minimum_should_match:最小匹配度,表示如果可选子句的数量等于(或小于)设置的值,则它们都是必需的,但如果它大于设置的值,则适用规范。

GET /索引名/_search
{
  "query": {
     "multi_match": {
     "query": "无锡正天",
     "fields": ["logisticsLineCompanyName","logisticsLineAddress"],
     "type": "best_fields",
     "tie_breaker": 0,
     "minimum_should_match":1
    }
  }
}

ES索引操作

创建索引

创建一个不带mapping的索引

PUT /索引名

创建索引设置索引及分片

PUT /索引名
{
  "settings": {
    "number_of_shards": 3,
    "number_of_replicas": 0
  }
}

修改索引setting副本数(number_of_shards 分片数量不可修改)

PUT /索引名/_settings {

"number_of_replicas": 2

}

创建带有静态映射类型的索引

PUT 索引名
{
  "settings": {
    "number_of_shards": 5,
    "number_of_replicas": 2
  },
  "mappings": {
    "crawl_article": {
      "_all": {
        "enabled": false
      },
      "properties": {
        "summary": {
          "search_analyzer": "ik_smart",
          "similarity": "BM25",
          "analyzer": "ik_max_word",
          "type": "text"
        },
        "title": {
          "search_analyzer": "ik_smart",
          "similarity": "BM25",
          "analyzer": "ik_max_word",
          "type": "text"
        },
        "content": {
          "search_analyzer": "ik_smart",
          "similarity": "BM25",
          "analyzer": "ik_max_word",
          "type": "text"
        }
      }
    }
  }
}

修改已创建的索引的mapping(如果mapping已有该字段则不能改变)

PUT 索引名/_mapping 
{
  "properties": {
    "字段1": {
      "type": "text",     //字段类型
      "fields":{
        "keyword":{
          "type":"keyword",
          "ignore_above": 256
        }
      }
    },

字段2:{
      "type": "text"
    },
    字段3:{
       "type": "text",

"index":false //索引方式、是否分析
    }
  }
}

示例:

返回结果

ES的文档字段可设置属性

boost

查询时提高字段的相关性算分,得分越高在查询结果集中排名越靠前,boost 可以指定其分数(权重),默认 1.0。

analyzer

字段分词器,默认为 standard,可以指定第三方的分词器。

dynamic

创建索引时,索引中字段是固定的,该属性可以决定是否允许新增字段,有三种状态A:

1)true:允许新增,es会为新的字段自动添加mapping类型。

2)false:允许新增,不会自动添加映射关系,但是不能作为主查询查询(查询不到具体的新增字段)。

3)strict:严格模式,不可以新增字段,新增就报错,需要重新设计索引。

ignore_above

超过ignore_above设置的字符串将不会被索引或存储,对于字符串数组,ignore_above将分别应用于每个数组元素,并且字符串元素,ignore_above将不会被索引或存储。

查询超过设置的数据

插入一条

查询

返回

 fields

允许为字段设置子字段,可以有多个。

查看某个索引的映射结构

Get   /索引名/_mapping

返回

查看某个字段的分词结果

GET /{index}/{type}/{id}/_termvectors?fields={fieldName}

返回(部分结果)

ES添加修改操作

添加操作

#不指定ID (ES会自动生成id)

POST /索引名/_doc/
{
  "字段1":"yh",
  "字段2":24

.........
}

#指定id

POST /索引名/_doc/1(id)
{
  "字段1":"yh2",
  "字段2":24
}

修改操作

1)会覆盖当前id的数据

PUT /索引名/_doc/1(指定id)
{
  "字段1":"修改值"
}

2)修改部分字段

POST /index/_update/id
{
  "doc":{
    "age":22
  }
}

ES删除操作

删除索引

删除指定索引

DELETE /索引名

删除document

单条document根据id删除

DELETE /索引名/_doc/ID

根据条件删除

POST 索引名/_delete_by_query
{
  "query": {
    "match_all": {
    
     }
  }
}

ES搜索引擎增删改查操作相关推荐

  1. python增删改查的框架_简单的Django框架增删改查操作

    Django之orm对MysqL数据库的增删改查操作简介: 利用Django中orm来查找数据库中的数据,对数据库进行增.删.改.查: 增:新增数据 # 操作数据库user表新增记录 # 方式1: u ...

  2. python操作mysql的增删改查_详解使用pymysql在python中对mysql的增删改查操作(综合)...

    这一次将使用pymysql来进行一次对MySQL的增删改查的全部操作,相当于对前五次的总结: 先查阅数据库: 现在编写源码进行增删改查操作,源码为: #!/usr/bin/python #coding ...

  3. 学生信息管理系统(连接数据库,面向对象的方法实现学生信息的增删改查操作)...

    ---------------------------------------------------------------------------------------------------- ...

  4. 后盾网lavarel视频项目---lavarel使用模型进行增删改查操作

    后盾网lavarel视频项目---lavarel使用模型进行增删改查操作 一.总结 一句话总结: 使用模型操作常用方法 查一条:$model=Tag::find($id); 删一条:Tag::dest ...

  5. java调用oracle删除,使用IDEA对Oracle数据库进行简单增删改查操作

    1.1 java中的数据存储技术 在java中,数据库存取技术可分为如下几类: 1.jdbc直接访问数据库 2.jdo(java data object)是java对象持久化的新的规范,也是一个用于存 ...

  6. 使用JDBC,完成对如下表的增删改查操作

    使用JDBC,完成对如下表的增删改查操作 增加操作 使用循环和随机数技巧,增加1000个数据.要求积分在0-200,注册时间均匀分布在2018年各个月份.从26个字母中随机取出3个字母作为昵称,昵称不 ...

  7. sqlite数据库的基本增删改查操作

    2019独角兽企业重金招聘Python工程师标准>>> 效果图示例 1.在清单里添加相应的权限 <uses-permission android:name="andr ...

  8. 基础的java增删改查,Java基础系列(基础):Java使用Cookie增删改查操作!

    什么是Cookie? Cookie是由W3C组织提出,最早由NetScape社区发展的一种机制. Cookie是存储于访问者的计算机中的变量.每当同一台计算机通过浏览器请求某个页面时,就会发送这个co ...

  9. python数据库教程_Python连接mysql数据库及简单增删改查操作示例代码

    1.安装pymysql 进入cmd,输入 pip install pymysql: 2.数据库建表 在数据库中,建立一个简单的表,如图: 3.简单操作 3.1查询操作 #coding=utf-8 #连 ...

最新文章

  1. 远程执行本地查找文件的命令并返回结果
  2. CF39C-Moon Craters【dp】
  3. LeetCode MySQL 1495. Friendly Movies Streamed Last Month
  4. MATLAB图自编码器
  5. 静默安装oracle后,启动oem报错,解决方法!
  6. tortoisegit 代码的回滚方式 --两种
  7. mysql中如何创建数据库_Mysql 中如何创建数据库和数据表
  8. 读《研发的那些事》有感
  9. 华为NP课程笔记13-PIM
  10. 有没有那种免费的办公软件?
  11. Java部署斗鱼直播,iOS斗鱼直播项目
  12. 标准误计算机excel公式,关于excel计算标准差SD和标准误SE的方法
  13. 计算机质保试题及答案,质量体系、国军标体系试卷(质保部出)
  14. 没有学历可以学计算机编程吗,学电脑编程要什么学历?
  15. Excel小技巧--高级漂亮的查询界面
  16. html单元格加斜线,怎样在表格中加斜线 选中第一个单元格,进入下一步
  17. 360c301路由器安装openwrt18.06usb打印服务器
  18. 曹国伟:微博客将改变媒体发展形态
  19. 进程和守护进程的区别
  20. 计算机二级关系代数运算知识点,计算机二级:关系代数运算.doc

热门文章

  1. unity wsad 鼠标_Unity键盘WASD实现物体移动|chu
  2. Java中如何快速构建项目脚手架
  3. linux下.tar.gz和.gz文件解压详解
  4. 配置Tomcat错误页面重定向
  5. github.io 公共博客
  6. phpStudy激活码
  7. 数字逻辑笔记4逻辑代数的基本定理和规则
  8. 科学的互联网思想 指引我国网络强国建设稳步前行
  9. 【5分钟教你】3种实现验证码功能-数字短信验证码-图形验证码-滑动验证码
  10. Mac下载安装配置maven