ES搜索引擎增删改查操作
目录
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搜索引擎增删改查操作相关推荐
- python增删改查的框架_简单的Django框架增删改查操作
Django之orm对MysqL数据库的增删改查操作简介: 利用Django中orm来查找数据库中的数据,对数据库进行增.删.改.查: 增:新增数据 # 操作数据库user表新增记录 # 方式1: u ...
- python操作mysql的增删改查_详解使用pymysql在python中对mysql的增删改查操作(综合)...
这一次将使用pymysql来进行一次对MySQL的增删改查的全部操作,相当于对前五次的总结: 先查阅数据库: 现在编写源码进行增删改查操作,源码为: #!/usr/bin/python #coding ...
- 学生信息管理系统(连接数据库,面向对象的方法实现学生信息的增删改查操作)...
---------------------------------------------------------------------------------------------------- ...
- 后盾网lavarel视频项目---lavarel使用模型进行增删改查操作
后盾网lavarel视频项目---lavarel使用模型进行增删改查操作 一.总结 一句话总结: 使用模型操作常用方法 查一条:$model=Tag::find($id); 删一条:Tag::dest ...
- java调用oracle删除,使用IDEA对Oracle数据库进行简单增删改查操作
1.1 java中的数据存储技术 在java中,数据库存取技术可分为如下几类: 1.jdbc直接访问数据库 2.jdo(java data object)是java对象持久化的新的规范,也是一个用于存 ...
- 使用JDBC,完成对如下表的增删改查操作
使用JDBC,完成对如下表的增删改查操作 增加操作 使用循环和随机数技巧,增加1000个数据.要求积分在0-200,注册时间均匀分布在2018年各个月份.从26个字母中随机取出3个字母作为昵称,昵称不 ...
- sqlite数据库的基本增删改查操作
2019独角兽企业重金招聘Python工程师标准>>> 效果图示例 1.在清单里添加相应的权限 <uses-permission android:name="andr ...
- 基础的java增删改查,Java基础系列(基础):Java使用Cookie增删改查操作!
什么是Cookie? Cookie是由W3C组织提出,最早由NetScape社区发展的一种机制. Cookie是存储于访问者的计算机中的变量.每当同一台计算机通过浏览器请求某个页面时,就会发送这个co ...
- python数据库教程_Python连接mysql数据库及简单增删改查操作示例代码
1.安装pymysql 进入cmd,输入 pip install pymysql: 2.数据库建表 在数据库中,建立一个简单的表,如图: 3.简单操作 3.1查询操作 #coding=utf-8 #连 ...
最新文章
- 远程执行本地查找文件的命令并返回结果
- CF39C-Moon Craters【dp】
- LeetCode MySQL 1495. Friendly Movies Streamed Last Month
- MATLAB图自编码器
- 静默安装oracle后,启动oem报错,解决方法!
- tortoisegit 代码的回滚方式 --两种
- mysql中如何创建数据库_Mysql 中如何创建数据库和数据表
- 读《研发的那些事》有感
- 华为NP课程笔记13-PIM
- 有没有那种免费的办公软件?
- Java部署斗鱼直播,iOS斗鱼直播项目
- 标准误计算机excel公式,关于excel计算标准差SD和标准误SE的方法
- 计算机质保试题及答案,质量体系、国军标体系试卷(质保部出)
- 没有学历可以学计算机编程吗,学电脑编程要什么学历?
- Excel小技巧--高级漂亮的查询界面
- html单元格加斜线,怎样在表格中加斜线 选中第一个单元格,进入下一步
- 360c301路由器安装openwrt18.06usb打印服务器
- 曹国伟:微博客将改变媒体发展形态
- 进程和守护进程的区别
- 计算机二级关系代数运算知识点,计算机二级:关系代数运算.doc