美文网首页
Elasticsearch全文搜索引擎

Elasticsearch全文搜索引擎

作者: 靠还是你 | 来源:发表于2020-02-19 15:45 被阅读0次

Elasticsearch 全文搜索引擎
分布式 多用户 RESTful接口 java开发服务 支持中文分词搜索 默认配置文件内存4G

安装 Elasticsearch 
1.安装java环境(JDK) 
$yum install -y java  //yum 安装JDK
$java -version  //测试安装
2.下载和安装Elasticsearch 官网找RPM包
$wget https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-7.6.0-x86_64.rpm
$rpm -ivh elasticsearch-7.6.0-x86_64.rpm 
$systemctl start elasticsearch.service //启动——时间比较长   or $service elasticsearch start
$curl localhost:9200 //启动检测
$netstat -apn | grep 9200 //检测端口
$server elasticsearch status //查看操作状态
$cd /etc/elasticsearch/jvm.options //配置文件 出错应添加 -Xms256m 分配内存大小  --XX:AssumeMP
3.下载安装kibana 图示化操作 Elasticsearch
$wget https://artifacts.elastic.co/downloads/kibana/kibana-7.6.0-x86_64.rpm
$rpm -ivh kibana-7.6.0-x86_64.rpm //安装
$vim /etc/kibana/kibana.yml //修改kibana相关配置
server.host "0.0.0.0" //任意主机访问
lasticsearch: "http://127.0.0.1:9200"
$/usr/share/kibana/bin/kibana  //启动kibana  启动比较慢
通过 http://域名:5610访问
4.基本概念
index(类似数据库) document(json数据) type即将废弃(对document分组)
kibana->Dev Toohs->console 中操作 
GET /_cat/health?v //集群状况
GET /_cat/nodes?v  //节点状态
GET /_cat/indices?v //列出所有索引            
5.创建索引
put /goods //创建索引
delete /goods //删除索引
6.Document文档操作
创建
PUT /customer/_doc/1?pretty{"name":"zhangsan"}    // 手动指定ID customer索引,_doc type,1为ID,pretty返回结果json格式
POST /customer/_doc/{"name":"lisi"}    //生成随机ID,唯一
查询
GET /customer/_doc/1?pretty
修改
PUT /customer/_doc/1{"name":"zhangshan1"} //完整字段更新,否则数据丢失
POST /customer/_doc/1/_update{"doc":{"name","zhangsan2"}} //只更新提交的字段
删除
DELETE /customer/_doc/1
批量添加
POST /customer/_doc/_bulk{"index":{"_id":2}}{"name":"wangwu"}{"index":{"_id":3}}{"name":"wangwu1"}
批量修改
POST /customer/_doc/_buck{"update:{"_id":2}"}{"doc":"name":"zhaoku"}{"delete":{"_id":3}}
获取多条数据
GET /customer/_doc/_mget{"ids":[1,2]}
搜索数据
全部商品
GET /goods/_search
条件搜索
GET /goods/_search?q=title:xiaomi5
请求体查询 完全匹配
GET /goods/_search{"query":{"match":{"title":"xiaomi5"}}}
高级搜索 
同时满足 
GET /goods/_search{"query"{"bool":{"must":[{"match":{"des":}}]}}}
满足一个    
GET /goods/_search{"query"{"bool":{"should":[{"match":{"des":}}]}}}
7.安装中文分词插件 IK   标准分词器:把中文的词分成字匹配 出现使用问题
网址: https://github.com/medcl/elasticsearch-analysis-ik
$find / -name elasticsearch-plugin  //查找elasticsearch-plugin安装路径
下载及安装同时(注意对应版本) $路径/elasticsearch-plugin install https://github.com/elasticsearch-analysis-ik-6.3.0
$service elasticsearch restart //重启服务
8.中文分词插件 设置查询索引
"analyzer":"ik_max_word"
"search_analyzer":"ik_max_word"     
GET /tv/_analyze{"text":["索尼电视"]} //查看分词器情况         
GET /tv/_analyze{
        "tokenizer":"ik_max_word" //查询指定分词器 默认粒度按字查询
        "text":["索尼电视"]
    }
            
//分词匹配   索尼 电视 完全匹配
            GET /tv/_search
            {
                "query":{
                    "match_phrase":{
                        "name":{
                            "query":"索尼电视", // 索尼 电视 匹配
                            "slop":20 //间隔多少查询两个词的匹配
                        }
                    }
                }
            }
9.laravel5.5 使用elasticsearch.yml 可以修改配置设置访问
laravel composer安装
composer require elasticsearch/elasticsearch:~6.0
          1.初始化操作创建索引 
    $host = ['192.168.1.168:9200'];
    $client = \Elasticsearch\ClientBuilder::create()->setHosts($hosts)->build();
                $params = [
                    'index'=>'product',
                    'body'=>[
                            'setings'=>[
                                'number_of_shards'=>1,
                                'number_of_replicas'=>0
                            ],
                            'mappings'=>[
                                '_doc'=>[
                                    '_source'=>[
                                        'enable'=>true
                                    ],
                                    'properties'=>[
                                        'title'=>[
                                            'type'=>'text',
                                            'analyzer'=>'ik_max_word',
                                            'search_analyzer'=>'ik_max_word',
                                        ],
                                        'description'=>[
                                            'type'=>'text',
                                            'analyzer'=>'ik_max_word',
                                            'search_analyzer'=>'ik_max_word',
                                        ]
                                        ]
                                    ]
                                ]
                            ]
                        ]
                ];
                $response = $client->index($params);
                        
    2.添加商品
    $host = ['192.168.1.168:9200'];
    $client = \Elasticsearch\ClientBuilder::create()->setHosts($hosts)->build();
    $params = [
                    'index'=>'product',
                    'type'=>'_doc',
                    'id'=>$id,
                    'body'=>[
                        'title'=>$title,
                        'description'=>$description
                    ]
                ];
    $response = $client->index($params);
                
    3.搜索商品
        
        $where['description'] = [
                    'query'=>$description
                    'slop'=>20
                    ];
                    
        $params = [
                    'index'=>'product',
                    'type'=>'_doc',
                    'body'=>[
                        'query'=>[
                            'match_phrase'=>$where
                            ]
                        ]
                    ];
                
        $host = ['192.168.1.168:9200'];
                
        $client = \Elasticsearch\ClientBuilder::create()->setHosts($hosts)->build();
        $client->search($params);

相关文章

网友评论

      本文标题:Elasticsearch全文搜索引擎

      本文链接:https://www.haomeiwen.com/subject/nqpafhtx.html