草庐IT

ElasticSearch(1)

~程序员小白~ 2023-04-03 原文

ElasticSearch7.8.0-window版本

1、下载与安装

下载地址:Index of elasticsearch-local,下载的是window的压缩包版本。

启动之后ES会有两个端口号分别是9300(ES集群间组件通信的端口号)和9200(浏览器访问的端口号),浏览器访问结果如下:

出现代表启动成功。同时需要注意的是:ES7.8版本需要JDK1.8以上。

2、倒排索引

倒排索引和正排索引:

倒排索引(反向索引):通过value查询key

正排索引(正向索引):通过key去查询value

3、索引操作

1、创建索引:ES中的索引相当于mysql中的数据库,创建索引则就像是创建一个数据库,使用put请求方式。

http://localhost:9200/shopping(创建索引),在postman中进行请求,如果显示以下内容表示创建成功

{
  "acknowledged": true,
  "shards_acknowledged": true,
  "index": "shopping"
}

2、查询和删除索引

查询索引和创建索引的方式是一样的,只需要把请求方式变成get请求即可。

删除索引:需要将请求方式换成delete

4、文档操作

1、插入文档,文档相当于数据库中的行,相当于是插入行数据

http://localhost:9200/shopping/_doc 其中shopping是索引名称,_doc是插入文档的意思,还可以是_create。
{
    "title":"小米手机",
    "category":"小米",
    "price":3999.00
} // 插入的格式为json格式
//返回的结果
{
    "_index": "shopping",
    "_type": "_doc",
    "_id": "I94bVIABdrlLWOJuwTMV", id是唯一的标识
    "_version": 1,
    "result": "created",
    "_shards": {
        "total": 2,
        "successful": 1,
        "failed": 0
    },
    "_seq_no": 0,
    "_primary_term": 2
}

id可以是自己定义,比如:http://localhost:9200/shopping/_doc/1001 ,插入文档的格式有四种:

PUT :localhost:9200/shopping/_doc/1001
POST :localhost:9200/shopping/_doc/
PUT :localhost:9200/shopping/_create/1001
POST :localhost:9200/shopping/_create/1001

2、主键查询和全部查询

主键查询路径:通过get请求-http://localhost:9200/shopping/_doc/1001

全部查询路径:通过get请求-http://localhost:9200/shopping/_saerch

3、全量和局部数据更新

全量数据更新:采用put的请求方式,http://localhost:9200/shopping/_doc/1001,将更新的数据以json的形式书写。

局部数据更新:采用post请求方式,http://localhost:9200/shopping/_update/1001,将更新其中的某个属性,请求体如下:

{
    "doc":{
        "title":"华为手机"
    }
}

4、删除

请求方式转变成delete。

5、查询:通过body体进行查询(get请求)

根据字段查询:

http://localhost:9200/shopping/_search
//查询的body体
{
    "query":{
        "match":{
            "category":"小米"
        }
    }
}

全部查询:

http://localhost:9200/shopping/_search
{
    "query":{
        "match_all":{
​
        }
    }
}

条件查询:

http://localhost:9200/shopping/_search
{
    "query":{
        "match_all":{
​
        }
    },
    "from":0, //从第几页开始
    "size":2, //每页显示几条
    "_source":["title"], //控制显示的内容,如结果中只显示title内容
    "sort":{ //进行排序
        "price":{
            "order":"asc"
        }
    }
}

多条件查询:同时成立使用must,单个成立就可以使用should,范围查询使用filter

http://localhost:9200/shopping/_search
{
    "query":{
        "bool":{
            "must":[ //必须成立
                { //第一个匹配条件
                    "match":{
                    "category":"小米"
                    }
                },{ //第二个匹配条件
                    "match":{
                    "price":3999.00
                    }
                }
            ],
            "filter":{ //范围查询
                "range":{
                    "price":{
                        "gt":5000
                    }
                }
            }
        }
    }
}

聚合查询:

http://localhost:9200/shopping/_search
{
    "aggs":{ //聚合查询
        "price_group":{ //操作名称 可以随意起名
            "terms":{ //进行分组
                "field":"price" //分组字段
            }
        }
    },
    "size":0 //只显示统计结果 不看原始数据
}
// 如果使用其他聚合操作比如avg等可以通过文档查询进行相应操作

映射关系:

有关ElasticSearch(1)的更多相关文章

  1. ruby - Rails Elasticsearch 聚合 - 2

    不知何故,我似乎无法获得包含我的聚合的响应...使用curl它按预期工作:HBZUMB01$curl-XPOST"http://localhost:9200/contents/_search"-d'{"size":0,"aggs":{"sport_count":{"value_count":{"field":"dwid"}}}}'我收到回复:{"took":4,"timed_out":false,"_shards":{"total":5,"successful":5,"failed":0},"hits":{"total":90,"max_score":0.0,"hits":[]},"a

  2. elasticsearch源码关于TransportSearchAction【阶段三】 - 2

    1.回顾.TransportServicepublicclassTransportServiceextendsAbstractLifecycleComponentTransportService:方法:1publicfinalTextendsTransportResponse>voidsendRequest(finalTransport.Connectionconnection,finalStringaction,finalTransportRequestrequest,finalTransportRequestOptionsoptions,TransportResponseHandlerT>

  3. ruby-on-rails - 使用 Rails (Tire) 和 ElasticSearch 进行模糊字符串匹配 - 2

    我有一个Rails应用程序,现在设置了ElasticSearch和Tiregem以在模型上进行搜索,我想知道我应该如何设置我的应用程序以对模型中的某些索引进行模糊字符串匹配。我将我的模型设置为索引标题、描述等内容,但我想对其中一些进行模糊字符串匹配,但我不确定在何处进行此操作。如果您想发表评论,我将在下面包含我的代码!谢谢!在Controller中:defsearch@resource=Resource.search(params[:q],:page=>(params[:page]||1),:per_page=>15,load:true)end在模型中:classResource'Us

  4. 美团外卖搜索基于Elasticsearch的优化实践 - 2

    美团外卖搜索工程团队在Elasticsearch的优化实践中,基于Location-BasedService(LBS)业务场景对Elasticsearch的查询性能进行优化。该优化基于Run-LengthEncoding(RLE)设计了一款高效的倒排索引结构,使检索耗时(TP99)降低了84%。本文从问题分析、技术选型、优化方案等方面进行阐述,并给出最终灰度验证的结论。1.前言最近十年,Elasticsearch已经成为了最受欢迎的开源检索引擎,其作为离线数仓、近线检索、B端检索的经典基建,已沉淀了大量的实践案例及优化总结。然而在高并发、高可用、大数据量的C端场景,目前可参考的资料并不多。因此

  5. 【详解】Docker安装Elasticsearch7.16.1集群 - 2

    开门见山|拉取镜像dockerpullelasticsearch:7.16.1|配置存放的目录#存放配置文件的文件夹mkdir-p/opt/docker/elasticsearch/node-1/config#存放数据的文件夹mkdir-p/opt/docker/elasticsearch/node-1/data#存放运行日志的文件夹mkdir-p/opt/docker/elasticsearch/node-1/log#存放IK分词插件的文件夹mkdir-p/opt/docker/elasticsearch/node-1/plugins若你使用了moba,直接右键新建即可如上图所示依次类推创建

  6. 【Elasticsearch基础】Elasticsearch索引、文档以及映射操作详解 - 2

    文章目录概念索引相关操作创建索引更新副本查看索引删除索引索引的打开与关闭收缩索引索引别名查询索引别名文档相关操作新建文档查询文档更新文档删除文档映射相关操作查询文档映射创建静态映射创建索引并添加映射概念es中有三个概念要清楚,分别为索引、映射和文档(不用死记硬背,大概有个印象就可以)索引可理解为MySQL数据库;映射可理解为MySQL的表结构;文档可理解为MySQL表中的每行数据静态映射和动态映射上面已经介绍了,映射可理解为MySQL的表结构,在MySQL中,向表中插入数据是需要先创建表结构的;但在es中不必这样,可以直接插入文档,es可以根据插入的文档(数据),动态的创建映射(表结构),这就

  7. ruby-on-rails - Elasticsearch 问题 : Cannot connect AWS elasticsearch service - 2

    我有一个关于配置elasticsearch以连接AWSelasticsearch服务以在生产环境中运行项目的问题。我的gem文件:gem'searchkick'gem'faraday_middleware-aws-signers-v4'gem'aws-sdk','~>2'gem"elasticsearch",">=1.0.15"引用:https://github.com/ankane/searchkick我的config/initializers/elasticsearch.rb文件:require"faraday_middleware/aws_signers_v4"ENV["ELAS

  8. linux查看es节点使用情况,elasticsearch(es) 如何查看当前集群中哪个节点是主节点(master) - 2

    elasticsearch查看当前集群中的master节点是哪个需要使用_cat监控命令,具体如下。查看方法es主节点确定命令,以kibana上查看示例如下:GET_cat/nodesv返回结果示例如下:ipheap.percentram.percentcpuload_1mload_5mload_15mnode.rolemastername172.16.16.188529952.591.701.45mdi-elastic3172.16.16.187329950.990.991.19mdi-elastic2172.16.16.231699940.871.001.03mdi-elastic4172

  9. ruby - 在 Elasticsearch 中计算地理距离 - 2

    我在查询中使用geo_distancefilter和tire,它工作正常:search.filter:geo_distance,:distance=>"#{request.distance}km",:location=>"#{request.lat},#{request.lng}"我预计结果会以某种方式包括到我用于过滤器的地理位置的计算距离。有没有办法告诉elasticsearch在响应中包含它,这样我就不必在ruby​​中为每个结果计算它?==更新==我在谷歌群组中的foundtheanswer:search.sortdoby"_geo_distance","location"=>"

  10. ruby - 有没有办法计算 ElasticSearch 或 Tire 中索引的所有元素? - 2

    如果不必像这样进行搜索就可以对元素进行计数,那就太好了Obj.search("id:*").count这可能吗? 最佳答案 在ElasticSearch中,您可以使用计数API对所有元素进行计数curl-XGEThttp://localhost:9200/index/_count参见CountAPI他们网站上的文档。 关于ruby-有没有办法计算ElasticSearch或Tire中索引的所有元素?,我们在StackOverflow上找到一个类似的问题: ht

随机推荐