ElasticSearch数据库的使用简介

ElasticSearch数据库的使用简介elasticsearc 使用简介


curl命令行查询数据

连接es数据库:

curl -u admin:admin https://master:9200/ 

查询所有索引:

curl -u admin:admin 'https://master:9200/_cat/indices?v' 

查询单个索引内容,如查询cqic_surf_chn_mul_yer索引库:

curl -u admin:admin https://master:9200/cqic_surf_chn_mul_yer/_search?pretty 

根据条件查询:

curl -u admin:admin https://master:9200/bigdata/_search?q=name:hadoop&pretty 

注意:高版本的es增加了安全机制,要求严格内容类型查询,所以在查询时需要加上请求头:-H "Content-Type: application/json"


查询的返回结果


DSL查询语言

一般来说,过滤语句比查询语句的执行效率高,因为它不用计算文档的相关性评分。频繁使用的过滤语句的结果集会被 ES自动缓存,以提高性能。过滤的目的就是粗暴地快速缩小匹配的结果集。通常全文搜索或需要用到相关性评分的场景采用查询(query),其他的全部用过滤(filter)。在进行搜索时,常会结合查询和过滤来达到我们的查询目的。

3、全文查询

说明
match 关键字匹配查询,模糊查询,默认是逻辑或,可通过operator参数更改
term 关键字匹配查询,精确查询
terms 关键字匹配查询,多条件查询 match_all 无条件查询所有
range 范围查询,gt大于;lt小于;gte大于或等于;lte小于或等于
bool 复合查询,组合叶子查询或复合查询语句,如must, should, must_not

must和should在上下文查询中执行;must_not在上下文过滤中执行


python操作es数据库

安装elasticsearch包,参考 官方文档

pip install elasticsearch 

create 如果文档不存在就创建,但如果文档存在就返回错误
index 如果文档不存在就创建,如果文档存在就更新
update 更新一个文档,如果文档不存在就返回错误
delete 删除一个文档,如果文档id不存在就返回错误






其中index是比较常用的。还有bulk的操作,某一个操作失败,不会影响其他文档的操作,并会在返回结果中告诉你失败的详细原因。

如果插入数据信息有问题想修正,可以采用update方法

注意:更新数据时采用{“doc”:{“name”:“python1”,“addr”:“深圳1”}}字典模式,尤其是doc标识不能缺少。

删除数据比较简单,指定文档的索引、文档类型和文档ID即可。

游标查询(scroll查询):可以用于对ES有效地执行大批量的文档查询,而又不用付出深度分页那种代价。

多文档操作:multi_get 和 bulk,适合批量操作

注意:创建索引库和索引时,索引库名称必须全部小写,不能以下划线开头,不能含逗号;如果没有指定ID,es会自动生成随机ID

es写入数据时有个刷新时间间隔默认1s,所以当时写入,要过一小会儿才能查询到

创建索引时的设置

索引刷新频率:数据写入后几秒可以被搜索到,默认是 1s。每次索引的 refresh 会产生一个新的 lucene 段,这会导致频繁的合并行为,如果业务需求对实时性要求没那么高,可以将此参数调大。


映射和数据类型

映射(mapping)

映射是定义一个文档及其所包含字段如何被存储和索引的方法。

避免类型陷阱:

It is no longer possible to delete the mapping for a type. Instead you should delete the index and recreate it with the new mappings.

在一个Elasticsearch的索引中,有相同名称字段的不同映射类型在Lucene内部是由同一个字段支持的。这会导致一些问题,比如,当你希望在一个索引中的两个映射类型,一个映射类型中的 deleted 字段映射为一个日期数据类型的字段,而在另一个映射类型中的 deleted 字段映射为一个布尔数据类型的字段,这就会失败。最重要的是,在一个索引中存储那些有很少或没有相同字段的实体会导致稀疏数据,并且干扰Lucene有效压缩文档的能力。基于这些原因,我们决定从Elasticsearch中删除映射类型的概念。

数据类型

es中的文档等价于java中的对象,是强数据类型。

text 类型

用来索引长文本(如新闻正文、邮件内容等),在建立索引前会将这些文本进行分词,转化为词的组合,建立索引。允许es来检索这些词语。不能用来排序和聚合。

keyword 类型

适合简短、结构化字符串,如email地址、手机号等,可以用于过滤、排序、聚合检索,也可以用于精确查询。不需要进行分词。keyword 类型字段只能用本身来进行检索。

数字类型

日期类型

布尔类型

JSON 文档中同样存在布尔类型,不过 JSON 字符串类型也可以被 ES 转换为布尔类型存储,前提是字符串的取值为 true 或者 false,布尔类型常用于检索中的过滤条件。


大批量数据查询

出于可靠性、数据传输大小、服务器稳定性等等多方面的原因,es不接受一次性对数据库的所有内容进行遍历。es默认支持的查询数量是10,000。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/210928.html原文链接:https://javaforall.net

(0)
上一篇 2026年3月18日 下午11:34
下一篇 2026年3月18日 下午11:35


相关推荐

  • java的graphics2d_Java Graphics2D 使用详解 | 学步园

    java的graphics2d_Java Graphics2D 使用详解 | 学步园正如我们在前面提到的 我们可以对 Graphics2D 类进行多项设置 实际上 渲染引擎在绘制 Graphics2D 图形前会查看 7 个主要的属性 PaintStrokeF 让我们逐一讲解 Paint 新的 paint 可以同时作用在边线和填充上了 Graphics2D 类可以用 setPaint

    2026年3月17日
    2
  • MITM中间人攻击

    MITM中间人攻击MITM 中间人攻击定义 中间人攻击是一种间接的入侵攻击 通过各种手段将入侵者控制的一台电脑放置在两台连接在网络中的电脑之间 这台入侵的电脑就叫做中间人 常见的攻击手段 1 ARP 欺骗 攻击者将网卡设置为混杂模式 伪装成代理服务器监听特定的流量来实现攻击 这是因为很多通信协议都是以明文来传输的 比如 HTTP FTP Telnet 等 不过 随着交换机代替集线器 简单的嗅探已经不能成功 必须使用 ARP 欺骗才能实现攻击 2 SMB 会话劫持 3 DNS 欺骗 4 为 HTTPS 提供假证书

    2026年3月16日
    3
  • java StringTokenizer

    java StringTokenizerStringTokenizer是一个用来分隔String的应用类,相当于VB的split函数。1.构造函数publicStringTokenizer(Stringstr)publicStringTokenizer(Stringstr,Stringdelim)publicStringTokenizer(Stringstr,Stringdelim,boolean

    2022年8月11日
    8
  • AI“六小虎”之一智谱回应裁员:正常组织调整

    AI“六小虎”之一智谱回应裁员:正常组织调整

    2026年3月12日
    3
  • raft算法详解_python raft

    raft算法详解_python raft  raft是工程上使用较为广泛的强一致性、去中心化、高可用的分布式协议。在这里强调了是在工程上,因为在学术理论界,最耀眼的还是大名鼎鼎的Paxos。但Paxos是:少数真正理解的

    2022年8月4日
    12
  • C语言学生成绩管理系统

    C语言实现了学生成绩管理系统,可以对学生成绩进行录入、查询、修改、删除和排序。#include<stdio.h>#include<stdlib.h>#include<string.h>typedefstructStuScore{ intstuID; charstuName[10]; intyuwen;

    2022年4月9日
    60

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号