Elasticsearch学习篇

Elasticsearch学习篇

介绍

Elasticsearch 是一个分布式的开源搜索和分析引擎,在 Apache Lucene 的基础上开发而成。Lucene 是开源的搜索引擎工具包,Elasticsearch 充分利用Lucene,并对其进行了扩展,使存储、索引、搜索都变得更快、更容易, 而最重要的是, 正如名字中的“ elastic ”所示, 一切都是灵活、有弹性的。而且,应用代码也不是必须用Java 书写才可以和Elasticsearc兼容,完全可以通过JSON 格式的HTTP 请求来进行索引、搜索和管理Elasticsearch 集群。

分布式及高可用

1、每个索引(index)都使用可配置数量的分片进行完全分片
2、每个分片都可以有一个或多个副本
3、在任何副本分片上可执行读取/搜索操作

主要使用命令

查看节点信息

localhost:9200/_cat/nodes

查看健康状况

localhost:9200/_cat/health

查看主节点信息

localhost:9200/_cat/master

查询所有索引

localhost:9200/_cat/indices

PUT请求添加一条带id的记录

localhost:9200/customer/external/1

POST请求添加一条不带id的记录(自动生成一个唯一id)

localhost:9200/customer/external/

查看一条记录(get请求)

localhost:9200/customer/external/1

post请求update更新数据

localhost:9200/customer/external/1/_update

删除一条数据(delete请求)

localhost:9200/customer/external/1

查出索引(delete请求)

localhost:9200/customer

match query
用于搜索单个字段

GET bank/_search
{
“query”: {
“match”: {
“account_number” : 248
}

match_phrase query
首先会把 query 内容分词,分词器可以自定义,同时文档还要满足以下两个条件才会被搜索到

GET bank/_search
{
“query”: {
“match_phrase”: {
“address”: “Hendrickson Street”
}
}
}

multi_match query
用于搜索多个字段

GET bank/_search
{
“query”: {
“multi_match”: {
“query”: “mill Lopezo”,
“fields”: [“address”,“city”]
}
}
}

term query
term 查询用来查找指定字段中包含给定单词的文档,term 查询不被解析,只有查询词和文档中的词精确匹配才会被搜索到,应用场景为查询人名、地名等需要精准匹配的需求

GET bank/_search
{
“query”: {
“term”: {
“title”: “银行”
}
}
}

terms query
terms 查询是 term 查询的升级,可以用来查询文档中包含多个词的文档

{
“query”: {
“terms”: {
“title”: [“java”, “python”]
}
}
}

range query
范围查询,用于匹配在某一范围内的数值型、日期类型或者字符串型字段的文档

GET bank/_search
{
“query”: {
“bool”: {
“must”: [
{“range”: {
“age”: {
“gte”: 18,
“lte”: 30
}
}}
]}}}

exists query
exists 查询会返回字段中至少有一个非空值的文档

{
“query”: {
“exists”: {
“field”: “zhang”
}
}
}

prefix query
prefix 查询用于查询某个字段中以给定前缀开始的文档

“query”: {
“prefix”: {
“description”: “ace”
}
}

wildcard query
wildcard query 中文译为通配符查询,支持单字符通配符和多字符通配符,? 用来匹配一个任意字符,* 用来匹配零个或者多个字符

“query”: {
“wildcard”: {
“author”: “张思*”
}
}

regexp query
regexp query 可以查询指定字段包含与指定正则表达式匹配的文档,需要匹配以 A 开头紧跟着数字的数据

“query”: {
“regexp”: {
“postcode”: “A[0-9].+”
}
}

fuzzy query
fuzzy 查询就是通过计算词项与文档的编辑距离来得到结果的,但是使用 fuzzy 查询需要消耗的资源比较大,查询效率不高,适用于需要模糊查询的场景

“query”: {
“fuzzy”: {
“title”: “javascritp”
}
}

更多命令可以去官网查询

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值