当前位置: 首页 > news >正文

手机网站建设报价企业域名注册

手机网站建设报价,企业域名注册,哪家建站好,asp网站转wap网站ElasticSearch简介 Elasticsearch 是一个分布式的、开源的搜索分析引擎#xff0c;支持各种数据类型#xff0c;包括文本、数字、地理、结构化、非结构化。 Lucene与ElasticSearch Apache Lucene是一款高性能的、可扩展的信息检索#xff08;IR#xff09;工具库#xf…ElasticSearch简介 Elasticsearch 是一个分布式的、开源的搜索分析引擎支持各种数据类型包括文本、数字、地理、结构化、非结构化。 Lucene与ElasticSearch Apache Lucene是一款高性能的、可扩展的信息检索IR工具库是由Java语言开发的成熟、自由开源的搜索类库基于Apache协议授权。Lucene只是一个软件类库如果要发挥Lucene的功能还需要开发一个调用Lucene类库的应用程序。 ElasticSearch在底层利用Lucene完成其索引功能因此其许多基本概念源于Lucene。ElasticSearch封装了许多lucene底层功能提供了分布式的服务、简单易用的restful API接口和许多语言的客户端。 倒排索引 Lucene中对文档检索基于倒排索引实现并将它发挥到了极致。 倒排索引是实现“单词-文档矩阵”的一种具体存储形式通过倒排索引可以根据单词快速获取包含这个单词的文档列表。 例如 id句子1I like apples2I dislike apples3I dislike apples too 如果要用单词作为索引而句子的位置作为被索引的元素那么索引就发生了倒置 id单词索引I{1,2,3}like{1}apples{1,2,3}dislike{2,3}too{3} 如果要检索I dislike apples这句话那么就可以这么计算 : {1,2,3} ^ {2,3} ^ {1,2,3} (^是交集) 核心概念 索引(Index) ES将数据存储于一个或多个索引中索引是具有类似特性的文档的集合。类比传统的关系型数据库领域来说索引相当于SQL中的一个数据库或者一个数据存储方案(schema)。索引由其名称(必须为全小写字符)进行标识并通过引用此名称完成文档的创建、搜索、更新及删除操作。一个ES集群中可以按需创建任意数目的索引。 类型(Type) 类型是索引内部的逻辑分区(category/partition)然而其意义完全取决于用户需求。因此一个索引内部可定义一个或多个类型(type)。一般来说类型就是为那些拥有相同的域的文档做的预定义。例如在索引中可以定义一个用于存储用户数据的类型一个存储日志数据的类型以及一个存储评论数据的类型。类比传统的关系型数据库领域来说类型相当于“表”。 文档(Document) 文档是Lucene索引和搜索的原子单位它是包含了一个或多个域的容器基于JSON格式进行表示。文档由一个或多个域组成每个域拥有一个名字及一个或多个值有多个值的域通常称为“多值域”。每个文档可以存储不同的域集但同一类型下的文档至应该有某种程度上的相似之处。 映射(Mapping) ES中所有的文档在存储之前都要首先进行分析。用户可根据需要定义如何将文本分割成token、哪些token应该被过滤掉以及哪些文本需要进行额外处理等等。另外ES还提供了额外功能例如将域中的内容按需排序。事实上ES也能自动根据其值确定域的类型。 **节点Node ** 一个es实例即为一个节点也是集群的一部分它存储你的数据并参与集群的索引和搜索。和集群一样节点也是通过唯一的名字去区分默认名字是一个随机的UUID当服务器启动的时候就会设置到节点。你也可以自定义节点的名称。名称对管理员来说十分重要它可以帮助你辨认出集群中的各个服务器和哪个节点相对应。 分片(Shard)和副本(Replica) ES的“分片(shard)”机制可将一个索引内部的数据分布地存储于多个节点它通过将一个索引切分为多个底层物理的Lucene索引完成索引数据的分割存储功能这每一个物理的Lucene索引称为一个分片(shard)。每个分片其内部都是一个全功能且独立的索引因此可由集群中的任何主机存储。创建索引时用户可指定其分片的数量默认数量为5个。 集群Cluster 集群是一个或多个节点服务器的集合它们联合起来保存所有的数据索引以分片为单位分散到多个节点上保存并且可以在所有的节点上进行索引和搜索操作。集群通过一个唯一的名字区分默认的名字是“elasticsearch”。这个名字十分重要因为一个节点仅仅可以属于一个集群并根据集群名称加入集群。 与关系型数据库核心概念对比 Elasticsearch关系型数据库如Mysql索引Index数据库Database类型Type8.x版本已废弃表Table文档Document数据行Row字段Field数据列Column映射Mapping约束Schema 数据类型 Elasticsearch 8.x中已经完全删除了数据类型创建映射时也不再支持使用type字段指定数据类型不然会报错index is not a valid parameter. Allowed parameters are create, error_trace 这里就不继续介绍数据类型了 安装和启动 Windows 1.去官网Download Elasticsearch | Elastic下载windows版本压缩包然后解压 2.修改config目录下的elasticsearch.yml文件将截图中的两个配置项true改为false不然会报错[WARN ][o.e.h.n.Netty4HttpServerTransport] [BF-202205061541] received plaintext http traffic on an https channel, closing connection Netty4HttpChannel{localAddress/[0:0:0:0:0:0:0:1]:9200, remoteAddress/[0:0:0:0:0:0:0:1]:62134} 3.双击bin/elasticsearch.bat脚本启动服务 4.打开浏览器访问http://localhost:9200/输出下面的json信息表示启动成功 {name: BF-202205061541,cluster_name: elasticsearch,cluster_uuid: 0JlZuKgbSWa3DGX44DnxgQ,version: {number: 8.12.2,build_flavor: default,build_type: zip,build_hash: 48a287ab9497e852de30327444b0809e55d46466,build_date: 2024-02-19T10:04:32.774273190Z,build_snapshot: false,lucene_version: 9.9.2,minimum_wire_compatibility_version: 7.17.0,minimum_index_compatibility_version: 7.0.0},tagline: You Know, for Search }Docker 拉取镜像 docker pull elasticsearch:8.12.2 # 版本号自己选择创建并启动容器 docker run --name elasticsearch -p 9200:9200 -p 9300:9300 -d elasticsearch:8.12.2设置密码 docker exec -it elasticsearch # 进入docker cd /usr/share/elasticsearch/bin # 进入elasticsearch目录 ./elasticsearch-setup-passwords interactive #要同时设置内置6个账户的密码访问elasticsearch 浏览器打开https://192.168.204.128:9200即可访问需要输入上面设置的账号和密码注意这里是要https访问 安装分词器 elasticsearch有默认的分词器但是对中文不太友好我们可以单独安装适用于中文的分词器ik根据你的es版本再Releases · infinilabs/analysis-ik (github.com)下载对应的压缩包然后解压到es目录下的plugins/ik目录然后重启es服务即可 插件 es-client推荐 elasticsearch的浏览插件项目主页 | es-client (esion.xyz)提供各个浏览器插件在插件市场都能搜得到界面美观 elasticsearch-head elasticsearch-head是一种便捷查询操作elasticsearch库的可视化工具具备集群管理、增删查改等功能用于监控 Elasticsearch 状态的客户端插件包括数据可视化、执行增删改查操作等有npm、docker和浏览器扩展版本仅Chrome浏览器按照下面文档选择自己喜欢的方式安装即可 mobz/elasticsearch-head: A web front end for an elastic search cluster (github.com) php调用 由于实际开发中项目都是使用php框架开发所以以下分别用ThinkPHP5和Laravel框架实现 ThinkPHP框架 安装扩展 composer require elasticsearch/elasticsearch composer dump-autoload索引和文档的增删改查 ?phpnamespace app\index\controller;use Elasticsearch\ClientBuilder;class Elasticsearch {// 客户端protected $client null;//索引名称protected $indexName test;public function __construct(){try {$this-client ClientBuilder::create()-setHosts([127.0.0.1:9200])-build();} catch (\Exception $e) {die($e-getMessage());}}/*** 创建索引* desc 相当于mysql的数据库索引只需要创建一次*/public function createIndex(){$params [index $this-indexName, // 索引名称body [settings [number_of_shards 5, //分片数量一个索引库将拆分成多片分别存储不同的结点默认5个number_of_replicas 0 //为每个分片分配的副本数replica shard是primary shard的副本负责容错以及承担读请求负载如果服务器只有一台只能设置为0不然会报错创建超时failed to process cluster event (create-index [test], cause [api]) within 30s],//创建文档映射就是文档存储在ES中的数据结构这里以商城商品搜索为例建立商品的映射mappings [properties [goods_id [ //商品idtype keyword,index true,],goods_name [ //商品名称type text, //数据类型为text支持分词;类型为keyword不支持分词,只能精确索引;8.x以上版本不再支持string等类型index true, //字段可以被索引也就是能用来当做查询条件来查询只能填写true和falseanalyzer ik_max_word, //索引分词器用于字符串类型这里使用中文分词器ik用默认分词器可以省略search_analyzer ik_smart//搜索分词器用于搜索关键词的分词器],goods_desc [ //商品描述type keyword,index false, //字段不可以被索引不能用来当做查询条件来查询],stock [ //商品库存type keyword,index true,],created_at [ //创建时间type keyword,index true,],status [ //上架状态type keyword,index true,],]]]];try {return $this-client-indices()-create($params);} catch (\Exception $e) {return $e-getMessage();}}/*** 删除索引*/public function deleteIndex(){$params [index $this-indexName, // 索引名称];try {return $this-client-indices()-delete($params);} catch (\Exception $e) {return $e-getMessage();}}/*** 查看映射*/public function getMapping(){$params [index $this-indexName, // 索引名称];try {return $this-client-indices()-getMapping($params);} catch (\Exception $e) {return $e-getMessage();}}/*** 新增文档*/public function addDoc(){$params [index $this-indexName, // 索引名称id 1, //文档id可省略默认生成随机idbody [goods_id 1, //商品idgoods_name 爆款煎饼传统双蛋煎饼肉松优质火腿片配菜薄脆, //商品名称goods_desc 煎饼果子, //商品描述stock 100, //库存created_at 2019-06-01 00:00:00, //创建时间status 1, //上架状态]];try {return json_encode($this-client-index($params));} catch (\Exception $e) {return $e-getMessage();}}/*** 获取文档*/public function getDoc(){$params [index $this-indexName, // 索引名称id 1, //文档id];try {return json_encode($this-client-get($params));} catch (\Exception $e) {return $e-getMessage();}}/*** 更新文档*/public function updateDoc(){$params [index $this-indexName, // 索引名称id 1, //文档idbody [doc [goods_name 爆款煎饼传统双蛋煎饼肉松优质火腿片配菜薄脆, //更新商品名称]]];try {return json_encode($this-client-update($params));} catch (\Exception $e) {return $e-getMessage();}}/*** 删除文档*/public function deleteDoc(){$params [index $this-indexName, // 索引名称id 1, //文档id];try {return json_encode($this-client-delete($params));} catch (\Exception $e) {return $e-getMessage();}}/*** 查询文档** 查询条件* must且数组里面的条件都要满足该条数据才被选择所有的条件为且的关系* must_not或然后取反数组里面的条件满足其中一个该条数据则不被选择* should或数组里面的条件满足其中一个该条数据被选择*/public function searchDoc(){$keywords 火腿煎饼; // 查询关键词$params [index $this-indexName, // 索引名称body [query [bool [should [ //should:模糊查询(or)must:精确查询(and)must_not:or取反match [goods_name $keywords], //match匹配字段range范围查询]],],sort [stock [order desc]], // 排序from 0, // 分页起始位置size 10 // 分页记录数量]];try {return json_encode($this-client-search($params),JSON_UNESCAPED_UNICODE);} catch (\Exception $e) {return $e-getMessage();}}//testpublic function test(){ // $res 123; // $res $this-deleteIndex(); // $res $this-createIndex(); // $res $this-getMapping(); // $res $this-addDoc(); // $res $this-getDoc(); // $res $this-updateDoc(); // $res $this-deleteDoc();$res $this-searchDoc();var_dump($res);} }Laravel框架 方式一 参考上面的ThinkPHP框架调用 方式二 Laravel框架除了能像tp框架一样自己写es的功能它还有专门的es扩展包并且支持在model中使用es及导入数据 安装扩展包 composer require elasticsearch/elasticsearch composer require tamayo/laravel-scout-elastic composer require laravel/scout发布配置 php artisan vendor:publish --providerLaravel\Scout\ScoutServiceProvider修改配置 修改config/scout.php文件的配置将驱动driver env(SCOUT_DRIVER, algolia)改为driver env(SCOUT_DRIVER, elastic) 然后最文件增加elasticsearch配置 /* |-------------------------------------------------------------------------- | Elasticsearch Configuration |-------------------------------------------------------------------------- | | Here you may configure your Elasticsearch settings. | */ elasticsearch [index env(ELASTICSEARCH_INDEX, laravel), //laravel就是索引的名字可以根据你的需求随便起hosts [env(ELASTICSEARCH_HOST, http://127.0.0.1:9200),],],当然你可以在.env环境配置文件中覆盖配置 ELASTICSEARCH_HOST127.0.0.1:9200使用es public function handle(){$host config(scout.elasticsearch.hosts);$index config(scout.elasticsearch.index);$client ClientBuilder::create()-setHosts($host)-build();if ($client-indices()-exists([index $index])) {$this-warn(Index {$index} exists, deleting...);$client-indices()-delete([index $index]);}$this-info(Creating index: {$index});return $client-indices()-create([index $index,body [settings [number_of_shards 1,number_of_replicas 0],mappings [_source [enabled true],properties [id [type long],title [type text,analyzer ik_max_word,search_analyzer ik_smart],subtitle [type text,analyzer ik_max_word,search_analyzer ik_smart],content [type text,analyzer ik_max_word,search_analyzer ik_smart]],]]]); }Model中使用 参考官方文档Scout 全文搜索 | 官方扩展包 |《Laravel 6 中文文档 6.x》| Laravel China 社区 (learnku.com)
http://www.zqtcl.cn/news/587449/

相关文章:

  • 珠海企业网站建设报价鄂州网吧什么时候恢复营业
  • 手机制作钓鱼网站id转换为wordpress
  • 手机网站 好处信用中国 网站有那个部门支持建设
  • 模板免费网站自己如何做网站优化
  • 自适应网站做mip改造淘宝上买衣服的网站
  • 射阳做企业网站哪家好利用新冠消灭老年人
  • 网站头部修改wordpress php幻灯片代码
  • 网络违法犯罪举报网站哪里有制作网站服务
  • 临沂怎么做网站网站 单页
  • 科技信息网站系统建设方案建筑设计专业世界大学排名
  • 做网站运营的简历小型视频网站建设
  • 福建省亿力电力建设有限公司网站网页设计html代码大全动物
  • 如何建网站赚取佣金企业网站的在线推广方法有
  • 嵌入式转行到网站开发免费秒玩小游戏
  • 采购网站排名不需要证件做网站
  • wordpress添加用户登录东莞网络公司seo优化
  • 哪些企业网站使用水墨风格设计免费
  • 河北邯郸做网站的公司哪家好云南建站公司
  • 网站开发如何给用户发邮件wordpress中文插件下载
  • 专业外贸网站建设公司排名网站错误列表
  • 魔站建站系统哪家好扬州网站开发公司电话
  • 合伙做网站网络公司网站建设首页
  • 网站建设项目经理深圳在线官网
  • 网站开发技术及应用wordpress自定义类型使用模板
  • 网站颜色 字体代销网站源码
  • 做二手车有哪些网站有哪些手续翠竹林wordpress主题
  • 商城网站开发报价单献县做网站价格
  • 做网站和推广需要多少钱诚信企业查询系统
  • c 2015 做网站网站设计技术有哪些?
  • 安丘网站开发主播网站建立