es 简单实现增加,查询,分词 热词

这篇具有很好参考价值的文章主要介绍了es 简单实现增加,查询,分词 热词。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

看代码:

 $params = [
            'index' => "goods",
            'body' => [
                'mappings' => [
                    'properties' => [
                        //之后可以进行搜索的字段
                        'name' => [
                            'type' => 'text',
                            "analyzer" => "ik_max_word",
                            "search_analyzer" => "ik_max_word"
                        ]
                    ]
                ]
            ]
        ];
        $this->client = ClientBuilder::create()->setHosts(['127.0.0.1:9200'])->build();
//    执行 只用执行一次即可
//        $this->client->indices()->create($params);

 添加es中的表,index 表示表名 body 表示主体部分,然后执行,可以创建一个es 中的表格,相当于数据库中的数据表,现在还是空的表格,需要添加数据后在进行查询

添加:

 $goods = $goods->toArray();
        $params = [
            'index' => 'goods',
            'type' => '_doc',
            'body' => $goods
        ];
        //执行添加
        return $this->client->index($params);

先查询出添加数据库的数据,转为数组格式添加进es中 方便在随后的搜索中实现搜索

搜索:

     //判断用户是否搜索,如果没有则跳过
        if ($search != "") {
            $client = ClientBuilder::create()->setHosts(['127.0.0.1:9200'])->build();
            $params = [
                'index' => 'goods',
                'type' => '_doc',
                'body' => [
                    'query' => [
                        'match' => [
                            'name' => $search
                        ]
                    ],
                    'highlight' => [
                        'fields' => [
                            'name' => [
                                'pre_tags' => "<em style='color: red'>",
                                'post_tags' => "</em>",
                            ]
                        ]
                    ]
                ]
            ];
//            dd($params);
            // 执行搜索
            $response = $client->search($params);
//            dd($response);
            //高亮
            $data = $response['hits']['hits'];
            $res = [];
            //循环获取高亮字段
            foreach ($data as $v) {
                if (!empty($v['highlight']['name'][0])) {
                    $v['_source']['name'] = $v['highlight']['name'][0];
                }
                array_push($res, $v['_source']);
            }
//            热词
            Redis::zincrby('search', 1, $search);
            return $res;
        }
        $res = Goods::get();
//        dd($res);
        return $res;

基本实现文章来源地址https://www.toymoban.com/news/detail-612713.html

到了这里,关于es 简单实现增加,查询,分词 热词的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • ES查询索引字段的分词结果

    一、_termvectors  1、查看文档中某一个字段的分词结果 GET /{index}/{type}/{_id}/_termvectors?fields=[field] 2、样例: text的值为:https://www.b4d99.com/html/202204/45672.html 得到的结果: 二、_analyze 1、语法 2、样例: text的值为:https://www.b4d99.com/html/202204/45672.html 得到的结果:

    2024年02月11日
    浏览(68)
  • ES分词字典更新查询不到数据

    存储于es的文档数据将会被分词存储 例如: 当我们通过ik远程扩展词库增加自定义字典 : “ 词的 ”; 已经存在的数据将不会重新分词,例如上面案例中, 已经存在的数据,就不能通过新增的字典 “词的” 查询到 “分词的句子” 这条数据 利用如下命令刷新索引即可 Java

    2024年02月14日
    浏览(33)
  • Elasticsearch专栏-5.es基本用法-分词查询

    所谓分词,就是把一段语句,分割成一个个单词的过程。比如\\\"717 Hendrickson Place\\\"短语,分词后就是三个单词,即717、hendrickson、place。注意,分词后的单词默认都是小写。 分词查询,指的就是查询时,把要查询的语句(字符串)先进行分词,然后拿分词后的单词去文档集合中比

    2024年01月16日
    浏览(45)
  • canaladapter 同步mysql(一对多关系)到es,es 添加逗号分词查询

    mysql 一对多关系同步到es,刚好es需要的是一个字段对应逗号分割的值。这样就解决了mysql多表关联查询很慢的弊端。但是es中给如何把逗号分割的字符串做为查询条件呢,答案如下:先看一个简单的例子:   以上就是逗号分割的字段如何在es中检索出来。 项目中实战:通过ca

    2024年02月16日
    浏览(39)
  • 项目实战:ES的增加数据和查询数据

    最近需要做一个有关查询聊天记录的功能,通过资料了解到使用ES可以方便我们快速查询内容。自己进行ES框架的搭建,感兴趣的可以看博客进行学习:https://blog.csdn.net/weixin_45309155/article/details/132686375?spm=1001.2014.3001.5501 ES搭建好之后就是应用了,下面就先总结一下关于最近在项

    2024年02月07日
    浏览(37)
  • es在索引中自定义简单的分词器 Analyzer 扩展

    es在索引中自定义简单的分词器 Analyzer 扩展 PUT index1 {   \\\"settings\\\": {     \\\"analysis\\\": {       \\\"analyzer\\\": {         \\\"ik_max_word_expand\\\": {           \\\"type\\\": \\\"custom\\\",           \\\"char_filter\\\": \\\"html_strip\\\",           \\\"tokenizer\\\": \\\"ik_max_word\\\"         }       }     }   } }   在索引中自定义简单的分

    2024年02月15日
    浏览(37)
  • 第七章-分布式搜索引擎-ES:全文查询、分词查询、精确查询、地理坐标查询、组合查询(bool、funtion_score)以及RestApi

    DSL查询分类 全文查询、分词查询、非分词查询、地理坐标查询、组合查询 match_all 查询所有,不需要查询条件,固定写法_search 第一个hits就是命中的数据 ,total就是条数,第二个hits是source嘞   全文检索查询 我们不要整多个字段查询,参与的字段越多,查询速度越慢,如果有

    2024年01月16日
    浏览(81)
  • laravel如何使用scout+elasticsearch搜索,并支持IK分词

    本扩展包支持IK分词设置。 在按下文操作前请先阅读 laravel scout 全文搜索文档 安装 您可以通过composer安装软件包 wannanbigpig/laravel-scout-elastic: Laravel 会自动注册驱动服务提供者。 Elasticsearch 配置 安装完成后,您应该使用vendor:publish Artisan命令发布Scout配置文件。该命令将把scou

    2024年02月06日
    浏览(84)
  • 橘子学ES16之分词三大组件以及如何自己实现自己的分词器

    本文来看一下ES的多字段特性,以及如何配置一个自定义的分词器。 精确值和全文检索值。精确值的意思就是不分词,不全文检索。当成mysql中的那种等值查询。全文文本值意思就是查询的时候走的是分词的路子,全文文本的匹配。 1.1、Exact Values 包括数字类型,日期类型,具

    2024年02月12日
    浏览(41)
  • es查询简单场景问题小记

    需求背景:将订单表数据同步至es,实现根据订单名称、产品名称、客户姓名、客户手机号、备注、供应商姓名进行模糊查询 ps:整合springboot+RestHighLevelClient 关于操作es数据的工具类,网上一抓一大把,我也是随便找了文章,修修改改直接用的 这篇文章主要是想记录一下在查

    2024年02月08日
    浏览(39)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包