实时分析系统ElasticSearchLZ名約山炮

百度:我们比如说想找寻任何的信息的时候,就会上百度去搜索一下,比如说找一部自己喜欢的电影,或者说找一本喜欢的书,或者找一条感兴趣的新闻(提到搜索的第一印象)。百度!=搜索

1)互联网的搜索:电商网站,招聘网站,新闻网站,各种app

2)IT系统的搜索:OA软件,办公自动化软件,会议管理,日程管理,项目管理。

用数据库来实现搜索,是不太靠谱的。通常来说,性能会很差

1)全文检索,倒排索引

2)lucene,就是一个jar包,里面包含了封装好的各种建立倒排索引,以及进行搜索的代码,包括各种算法。我们就用java开发的时候,引入lucenejar,然后基于lucene的api进行去进行开发就可以了

可以看到Lucene为倒排索引(TermDictionary)部分又增加一层TermIndex结构,用于快速定位,而这TermIndex是缓存在内存中的,但MySQL的B+tree不在内存中,所以整体来看ES速度更快,但同时也更消耗资源(内存、磁盘)

ElasticSearch,基于Lucene,隐藏复杂性,提供简单易用的RestfulAPI接口、JavaAPI接口(还有其他语言的API接口),ElasticSearch是一个实时分布式搜索和分析引擎。它用于全文搜索、结构化搜索、分析。

关于ElasticSearch的一个传说,有一个程序员失业了,陪着自己老婆去英国伦敦学习厨师课程。程序员在失业期间想给老婆写一个菜谱搜索引擎,觉得Lucene实在太复杂了,就开发了一个封装了Lucene的开源项目:Compass。后来程序员找到了工作,是做分布式的高性能项目的,觉得Compass不够,就写了ElasticSearch,让Lucene变成分布式的系统。

全文检索:将非结构化数据中的一部分信息提取出来,重新组织,使其变得有一定结构,然后对此有一定结构的数据进行搜索,从而达到搜索相对较快的目的。

结构化检索:我想搜索商品分类为日化用品的商品都有哪些,select*fromproductswherecategory_id='日化用品'。

数据分析:电商网站,最近7天牙膏这种商品销量排名前10的商家有哪些;新闻网站,最近1个月访问量排名前3的新闻版块是哪些。

1)维基百科,类似百度百科,牙膏,牙膏的维基百科,全文检索,高亮,搜索推荐。

4)GitHub(开源代码管理),搜索上千亿行代码。

1)天然分片,天然集群,ES把数据分成多个shard,下图中的P0-P2,多个shard可以组成一份完整的数据,这些shard可以分布在集群中的各个机器节点中。随着数据的不断增加,集群可以增加多个分片,把多个分片放到多个机子上,已达到负载均衡,横向扩展。

2)ElasticSearch不是什么新技术,主要是将全文检索、数据分析以及分布式技术,合并在了一起,才形成了独一无二的ES;lucene(全文检索),商用的数据分析软件(也是有的),分布式数据库(mycat)

3)对用户而言,是开箱即用的,非常简单,作为中小型的应用,直接3分钟部署一下ES,就可以作为生产环境的系统来使用了,数据量不大,操作不是太复杂

近实时,两个意思,从写入数据到数据可以被搜索到有一个小延迟(大概1秒);基于es执行搜索和分析可以达到秒级。

集群包含多个节点,每个节点属于哪个集群是通过一个配置(集群名称,默认是elasticsearch)来决定的,对于中小型应用来说,刚开始一个集群就一个节点很正常

集群中的一个节点,节点也有一个名称(默认是随机分配的),节点名称很重要(在执行运维管理操作的时候),默认节点会去加入一个名称为“elasticsearch”的集群,如果直接启动一堆节点,那么它们会自动组成一个elasticsearch集群,当然一个节点也可以组成一个elasticsearch集群。

索引包含一堆有相似结构的文档数据,比如可以有一个客户索引,商品分类索引,订单索引,索引有一个名称。一个index包含很多document,一个index就代表了一类类似的或者相同的document。比如说建立一个productindex,商品索引,里面可能就存放了所有的商品数据,所有的商品document。

6.0版本之前每个索引里都可以有多个type,6.0版本之后每个索引里面只能有一个Type,一般使用_doc代替了。

商品index,里面存放了所有的商品数据,商品document

商品type:product_id,product_name,product_desc,category_id,category_name,service_period

每一个type里面,都会包含一堆document

{"product_id":"1","product_name":"长虹电视机","product_desc":"4k高清","category_id":"3","category_name":"电器","service_period":"1年"}{"product_id":"2","product_name":"基围虾","product_desc":"纯天然,冰岛产","category_id":"4","category_name":"生鲜","eat_period":"7天"}1.7.6Document(文档-行)文档是ES中的最小数据单元,一个document可以是一条客户数据,一条商品分类数据,一条订单数据,通常用JSON数据结构表示,每个index下的type中,都可以去存储多个document。

一个document里面有多个field,每个field就是一个数据字段

productdocument{"product_id":"1","product_name":"高露洁牙膏","product_desc":"高效美白","category_id":"2","category_name":"日化用品"}1.7.8Mapping(映射-约束)数据如何存放到索引对象上,需要有一个映射配置,包括:数据类型、是否存储、是否分词等。

Mapping用来定义Document中每个字段的类型,即所使用的分词器、是否索引等属性,非常关键等。创建Mapping的代码示例如下:

PUTstudent(index_name->database){"mappings":{"_doc":{(type_name->table)"properties":{"stu_id":{(field_name->colume)"type":"keyword"},"name":{(field_name->colume)"type":"keyword"},"birth":{(field_name->colume)"type":"date"(yyyy-MM-ddHH:mm)}}}}}1.7.9ElasticSearch与数据库的类比关系型数据库(比如Mysql)

非关系型数据库(ElasticSearch)

数据库Database

索引Index

表Table

类型Type(6.0版本之后在一个索引下面只能有一个,7.0版本之后取消了Type)

数据行Row

文档Document(JSON格式)

数据列Column

字段Field

约束Schema

映射Mapping

1)索引对象(blog):存储数据的表结构,任何搜索数据,存放在索引对象上。

2)映射(mapping):数据如何存放到索引对象上,需要有一个映射配置,包括:数据类型、是否存储、是否分词等。

3)文档(document):一条数据记录,存在索引对象上。

4)文档类型(type):一个索引对象,存放多种类型数据,数据用文档类型进行标识。

2)下载Elasticsearch

3)由于后面我们需要用到Kibana,所以我们继续下载Kibana

4)由于后面我们需要用到IK分词器,所以我们继续下载IK分词

1)上传elasticsearch-6.6.0.tar.gz到hadoop104机器上的/opt/software目录下

2)解压elasticsearch-6.6.0.tar.gz到/opt/module目录下

tar-zxvf/opt/software/elasticsearch-6.6.0.tar.gz-C/opt/module/3)在/opt/module/elasticsearch-6.6.0目录下创建datas文件夹

cd/opt/module/elasticsearch-6.6.0mkdirdatas4)修改配置文件elasticsearch.yml

(2)nodename随意取但是集群内的各节点不能相同

(3)修改后的每行前面不能有空格,修改后的“:”后面必须有一个空格

5)修改配置文件jvm.options

vim/opt/module/elasticsearch-6.6.0/config/jvm.options#修改-Xms1g-Xmx1g#为-Xms256m-Xmx256m6)分发

xsync/opt/module/elasticsearch-6.6.0/7)分发完成后修改hadoop102和hadoop103主机的elasticsearch.yml文件中的node.name和network.host属性

2)分发

sudo/home/atguigu/bin/xsync/etc/security/limits.conf3)切换到root用户修改配置sysctl.conf,可以使用sudo

sudovim/etc/sysctl.conf#添加下面配置:vm.max_map_count=6553604)查看是否设置vm.max_map_count成功

5)分发

sudo/home/atguigu/bin/xsync/etc/sysctl.conf6)重启Linux虚拟机

#关机xcall.shshutdown-hnow7)重启虚拟机之后我们开始启动Elasticsearch(hadoop104上执行该命令)

9)新开一个hadoop104的shell窗口

10)停止Elasticsearch

#kill-9进程号kill-9182411)Elasticsearch集群启动/停止脚本

vim/home/atguigu/bin/elasticsearch.sh#!/bin/bashif(($#!=1))thenecho请输入单个start或stop参数!exitfi#对传入的单个参数进行校验,在hadoop102和hadoop103且执行第一层采集通道的启动和停止命令if[$1=start]thencmd="nohup/opt/module/elasticsearch-6.6.0/bin/elasticsearch>/dev/null2>&1&"elif[$1=stop]thencmd="ps-ef|grepElasticsearch|grep-vgrep|awk'{print\$2}'|xargskill"elseecho请输入单个start或stop参数!fi#在hadoop102和hadoop103且执行第一层采集通道的启动和停止命令foriinhadoop102hadoop103hadoop104doecho"--------------$i-----------------"ssh$i$cmdsleep8sdone12)赋予可执行权限

chmod+x/home/atguigu/bin/elasticsearch.sh13)分发脚本

xsync/home/atguigu/bin/elasticsearch.sh14)启动Elasticsearch集群

1)请求:

1)Kibana的安装,将kibana-6.6.0-linux-x86_64.tar.gz上传到hadoop104集群上的/opt/software目录中

2)解压kibana-6.6.0-linux-x86_64.tar.gz至/opt/module/

tar-zxvf/opt/software/kibana-6.6.0-linux-x86_64.tar.gz-C/opt/module/3)重命名

mv/opt/module/kibana-6.6.0-linux-x86_64//opt/module/kibana-6.6.04)修改kibana.yml,以连接Elasticsearch

7)修改之前的ES启动脚本为:

vim/home/atguigu/bin/elasticsearch.sh#!/bin/bashif(($#!=1))thenecho请输入单个start或stop参数!exitfies_home=/opt/module/elasticsearch-6.6.0kibana_home=/opt/module/kibana-6.6.0case$1in"start"){foriinhadoop102hadoop103hadoop104doecho"==============$i启动Elasticsearch=============="ssh$i"source/etc/profile;${es_home}/bin/elasticsearch>/dev/null2>&1&"sleep5s;donesleep2s;echo"==============hadoop104启动Kibana=============="sshhadoop104nohup${kibana_home}/bin/kibana>kibana.log2>&1&};;"stop"){sshhadoop104ps-ef|grep${kibana_home}|grep-vgrep|awk'{print$2}'|xargskillecho"==============hadoop104停止Kibana=============="foriinhadoop102hadoop103hadoop104dossh$i"ps-ef|grep$es_home|grep-vgrep|awk'{print\$2}'|xargskill">/dev/null2>&1echo"==============$i停止Elasticsearch=============="done};;esac8)分发脚本

xsync/home/atguigu/bin/elasticsearch.sh9)进入Kibana的DevTools,然后在操作窗口输入以下内容:

字符串型:text(分词)、keyword(不分词)

数值型:long、integer、short、byte、double、float、half_float、scaled_float

日期类型:date

布尔类型:boolean

二进制类型:binary

范围类型:integer_range、float_range、long_range、double_range、date_range

数组类型:array

对象类型:object

嵌套类型:nestedobject

geo_point(点)、geo_shape(形状)

记录IP地址:ip

实现自动补全:completion

记录分词数:token_count

记录字符串hash值:murmur3

多字段特性:multi-fields

1)创建操作

2)创建文档

3)查询

ES可以自动识别文档字段类型,从而降低用户使用成本

1)直接插入文档

2)查看mapping(birth自动识别为date类型,name识别为text类型)

3)日期类型的自动识别,可以自行配置日期格式,以满足各种需求

(1)自定义日期识别格式

PUTmy_index{"mappings":{"_doc":{"dynamic_date_formats":["yyyy-MM-dd","yyyy/MM/dd"]}}}(2)关闭日期自动识别

PUTmy_index2{"mappings":{"_doc":{"date_detection":false}}}4)字符串是数字时,默认不会自动识别为整形,因为字符串中出现数字时完全合理的,Numeric_datection可以开启字符串中数字的自动识别

分词器主要应用在中文上,在ES中字符串类型有keyword和text两种。keyword默认不进行分词,而text是将每一个汉字拆开称为独立的词,这两种都是不适用于生产环境,所以我们需要有其他的分词器帮助我们完成这些事情,其中IK分词器是应用最为广泛的一个分词器。

1)keyword类型的分词

2)text类型的分词

1)将下载好的elasticsearch-analysis-ik-6.6.0.zip上传至hadoop104机器的/opt/software目录

2)在/opt/module/elasticsearch-6.6.0/plugins目录下创建ik目录(名称随意起)

mkdir/opt/module/elasticsearch-6.6.0/plugins/ik3)解压elasticsearch-analysis-ik-6.6.0.zip至ik目录(若出现未找到unzip命令,则先安装)

sudoyuminstall-yunzipunzip/opt/software/elasticsearch-analysis-ik-6.6.0.zip-d/opt/module/elasticsearch-6.6.0/plugins/ik/4)分发分词器目录

xsync/opt/module/elasticsearch-6.6.0/plugins5)重新启动Elasticsearch,即可加载IK分词器

elasticsearch.shstopelasticsearch.shstart4.3.3IK分词器测试IK提供了两个分词算法ik_smart和ik_max_word,其中ik_smart为最少切分,ik_max_word为最细粒度划分。

1)最少划分ik_smart

2)最细切分ik_max_word

向Elasticsearch增加数据

PUTstudent{"mappings":{"_doc":{"properties":{"class_id":{"type":"keyword"},"stu_id":{"type":"keyword"},"name":{"type":"text"},"sex":{"type":"keyword"},"age":{"type":"integer"},"favo":{"type":"text","analyzer":"ik_max_word"}}}}}PUTstudent/_doc/1001{"class_id":"6001","stu_id":"2001","name":"花和尚","sex":"male","age":"29","favo":"吃肉,羊肉"}PUTstudent/_doc/1001{"class_id":"0821","stu_id":"001","name":"小花","sex":"female","age":18,"favo":"洗脚,海狗人参丸"}如果在关系型数据库Mysql中主键查询数据一般会执行下面的SQL语句

select*fromstudentwhereid=1001;但在Elasticsearch中需要采用特殊的方式

我们通过HTTP方法GET来检索文档,同样的,我们可以使用DELETE方法删除文档,使用HEAD方法检查某文档是否存在。如果想更新已存在的文档,我们只需再PUT一次

health

green(集群完整)yellow(单点正常、集群不完整)red(单点不正常)

status

是否能使用

index

索引名

uuid

索引统一编号

pri

主节点几个

rep

从节点几个

docs.count

文档数

docs.deleted

文档被删了多少

store.size

整体占空间大小

pri.store.size

主节点占空间大小

如果在关系型数据库Mysql中查询所有数据一般会执行下面的SQL语句

select*fromstu;但在Elasticsearch中需要采用特殊的方式

#协议方法索引/类型/_search

GETstu/_search响应内容不仅会告诉我们哪些文档被匹配到,而且这些文档内容完整的被包含在其中—我们在给用户展示搜索结果时需要用到的所有信息都有了

如果在关系型数据库Mysql中查询多字段匹配数据(字段检索)

一般会执行下面的SQL语句

select*fromstudentwheresex='male';但在Elasticsearch中需要采用特殊的方式,并且全值匹配会把查询条件当做一个整体来查。

没有对应的查询条件,因为ik_max_word分词器会把“海狗人参丸”分成以下词组

{"tokens":[{"token":"海狗","start_offset":0,"end_offset":2,"type":"CN_WORD","position":0},{"token":"人参","start_offset":2,"end_offset":4,"type":"CN_WORD","position":1},{"token":"丸","start_offset":4,"end_offset":5,"type":"CN_CHAR","position":2}]}我们会发现并没有“海狗人参丸”这几个字组合起来的词,因此查不到。

分词匹配会按照检索条件将其分词后再去匹配

GETstudent/_search{"query":{"match":{"favo":"海狗人参丸"}}}检索:ES的原理,从ES的倒排索引上检索指定分词对应的数据

切词:海狗人参丸=海狗,人参,人参丸

Select*Fromstudent.xWherefavolike‘%海狗%’orfavolike‘%人参%’orfavolike‘%人参丸%’4.4.5全值匹配和分词匹配结合使用GETstudent/_search{"query":{"bool":{"filter":{"term":{"sex":"female"}},"must":[{"match":{"favo":"海狗人参丸"}}]}}}4.4.6字段模糊匹配检索如果在关系型数据库Mysql中模糊查询多字段数据,一般会执行下面的SQL语句

select*fromstudentwherenamelike'%haha%'但在Elasticsearch中需要采用特殊的方式,查询出所有文档字段值分词后包含"我是程序"的文档

GETstudent/_search{"query":{"fuzzy":{"sex":"fmale"}}}4.4.7聚合检索4.4.7.1单聚合条件聚合查询相当于MySQL中的groupby

GETstudent/_search{"aggs":{"groupByClass":{"terms":{"field":"class_id.keyword","size":10}}}}4.4.7.2多聚合条件此时这两个聚合条件相互之间是没有关联的,比如同班级下的学生和年龄最大的学生

此时这两个聚合条件相互之间是有关联的,比如同班级下年龄最大的学生

如果想实现看某一页的内容,或者跳转到某一页显示出其内容,可以将from的值设置为((页面数-1)*size)

索引别名就像一个快捷方式或软连接,可以指向一个或多个索引,也可以给任何一个需要索引名的API来使用。别名带给我们极大的灵活性,允许我们做下面这些:

1)给多个索引分组(例如,last_three_months)

2)给索引的一个子集创建视图

3)在运行的集群中可以无缝的从一个索引切换到另一个索引

PUTmovie_index{"aliases":{"movie_chn_2021_query":{}},"mappings":{"movie_type":{"properties":{"id":{"type":"long"},"name":{"type":"text","analyzer":"ik_smart"}}}}}2)为已存在的索引增加别名

也可以通过加过滤条件缩小查询范围,建立一个子集视图

POST_aliases{"actions":[{"add":{"index":"student","alias":"student_query","filter":{"term":{"sex":"male"}}}}]}4.5.2查询别名与使用普通索引没有区别

IndexTemplate索引模板,顾名思义,就是创建索引的模具,其中可以定义一系列规则来帮助我们构建符合特定业务需求的索引的mappings和settings,通过使用IndexTemplate可以让我们的索引具备可预知的一致性。

这样做的好处有两个:

1)结构变化的灵活性:因为elasticsearch不允许对数据结构进行修改。但是实际使用中索引的结构和配置难免变化,那么只要对下一个间隔的索引进行修改,原来的索引位置原状。这样就有了一定的灵活性。

PUT_template/template_movie2021{"index_patterns":["movie_test"],"aliases":{"{index_query}":{},"movie_test_query":{}},"mappings":{"_doc":{"properties":{"id":{"type":"keyword"},"movie_name":{"type":"text","analyzer":"ik_smart"}}}}}其中"index_patterns":["movie_test*"],的含义就是凡是往movie_test开头的索引写入数据时,如果索引不存在,那么es会根据此模板自动建立索引。

在"aliases"中用{index}表示,获得真正的创建的索引名。

测试:

GET/test/emps/_searchGET/test/emps/_searchq=*GET/test/emps/_searchq=age:222)查询方式二,使用ES的DSL(特定领域语言)语法,将请求参数附加在请求体中

THE END
1.学菜谱app排行榜前十名偏玩手游盒子分享十大学菜谱app排行榜前十名手机应用,编辑为您推荐手机学菜谱app排行榜第一名到前5名到前十名的应用。找学菜谱app有哪些、学菜谱app哪个好用,上偏玩手游盒子https://m.pianwan.com/s/zj-561529
2.中国八大菜系菜谱大全app八大菜系经典菜谱app下载八大菜系app可以让你在这里学习粤菜、川菜、鲁菜、淮扬菜、浙菜、闽菜、湘菜、徽菜,海量的菜谱让你从新人小白开始学起,你可以选择喜欢的菜系学习,还可以学习多个菜系,让你感受每个菜系不同的风味。在这些软件中一般都会分类特别详细,你可以根据需求来筛选或者搜索,还为你提供详细的图文菜谱也有的提供视频菜谱,让你分http://www.downcc.com/k/badacaixiapp/
3.菜谱大全之100道家常菜谱菜谱大全app安卓版下载菜谱大全app能够为大家整理优质的食谱烹饪菜谱的生活服务工具,可以及时的掌握全面的数据内容管理以及丰富的食材配料的介绍,还有相关的社区能够在这里发表你烹饪美食的图片,来和大家进行相关交流。下面小编整理了一些菜谱大全app软件,感兴趣的小伙伴-起来下载试试吧。更新https://m.ali213.net/tag/cpdqrj.html
4.早餐菜品图片早餐菜品设计素材红动中国素材网提供205个早餐菜品图片、早餐菜品素材、早餐菜品背景、早餐菜品模板、早餐菜品海报等PS素材下载,包含PSD、AI、PNG、JPG、CDR等格式源文件素材,更多精品早餐菜品设计素材下载,就来红动中国,最后更新于2024-12-06 13:53:19。https://so.redocn.com/zaocan/d4e7b2cdb2cbc6b7.htm
5.家常菜点餐基于小程序的家庭大厨家常菜点餐系统设计与实现(源码+数据管理员可以管理用户信息,可以对用户信息添加修改删除。具体界面的展示如图5.1所示。 图5.1 用户信息界面 管理员可以对店铺进行查询修改,删除操作。具体界面如图5.2所示。 图5.3 店铺管理界面 系统管理员可以对菜品信息进行删查操作。界面如下图所示: 图5.4 菜品信息管理界面 https://blog.csdn.net/m0_66468899/article/details/144337136
6.模板tips模板 1、 美食小tips: 1、 2、 美食小tips: 1、 3、 美食小tips: 1、 4、 美食小tips: 1、 5、 美食小tips: 1、https://chihe.sohu.com/a/835570488_121948401
7.郓城县教育资源公共服务平台功能介绍学校管理员通过“在线录入”或模板导入添加设置教师食谱和学生食谱,可以添加图片详细展示菜品。通过“推送”功能将创建好的菜谱以通知或在门户展示这两种方式呈现给教师和家长。通过编辑完成餐别、序号、用户类别、负责人员这些信息的添加。(由管理员和全体师生参与) https://ycxlyxx.sdsjyy.cn/index.php?r=space/school/theme/content/view&id=843089&cid=1085
8.如何获取国外精美美食APP设计的PSD源文件?尊敬的用户,以下是一份关于国外精美美食APP设计模板PSD源文件的详细分享: 模板 这款美食APP设计模板以简洁、现代的风格为主,适合各种美食类的移动应用,模板包含多个页面,如首页、菜谱展示、用户评价、搜索功能等,充分满足用户浏览、搜索和分享美食的需求。 https://www.shiwaiyun.com/article/post/354525.html
9.美食食谱app界面图片免费下载美食食谱app界面素材千图网为您找到533张美食食谱app界面相关素材,千图网还提供美食食谱app界面图片,美食食谱app界面素材, 美食食谱app界面模板等免费下载服务,千图网是国内专业创意营销服务交易平台,一站式解决企业营销数字化、协同化,实现营销转化效果增长!https://www.58pic.com/tupian/meishishipuappjiemian.html
10.某菜谱APP流程图流程图模板某菜谱APP流程图 用户业务流程图 作者其他创作 大纲/内容 查看菜谱详情 关注 继续浏览/返回原页面 点赞/评论/分享 对用户是否感兴趣 发布笔记 返回原页面违法违禁:低俗、血腥、暴力等 模板文件问题:文件空白;内容错乱;克隆后无法编辑 模板内容涉及侵权 垃圾广告信息 其他理由 确定 图形https://www.processon.com/view/61e91bc61efad407830e855b
11.App产品使用说明书word模板.docApp 产品使用说明书 功能需求1.1功能划分栏目信息功能描述首页优惠图片轮播品牌优势营养常识.美食预定按分类浏览详情评论分类列表下单。5个定餐。1个优惠活动特价商品的展示。营养师营养资讯2个营养套餐,按季节按月进行营养套餐的搭配。关于我https://www.renrendoc.com/paper/236069128.html
12.香厨房菜谱大全app下载香厨房菜谱大全v1.0.0安卓版香厨房菜谱大全app香厨房菜谱大全手机版 安卓版下载 应用介绍 香厨房菜谱大全是一个美食菜谱软件,汇集了各种类型的美食,也提供了详细的菜谱介绍,可以帮助用户一站式发现感兴趣的美食,并轻松制作该道美食;而且下载该软件后,用户可以随时随地通过手机搜索需要的美食菜谱,无需过多的查找,可以快速发现需要的菜谱,并且平台https://m.xgbbs.net/app/237696.html
13.香哈网菜谱美食菜谱菜谱大全香哈网是一个专业的美食网站。提供丰富的菜谱、食谱、菜谱大全,更有菜谱图文视频讲解;学做菜、秀美食,与兴趣相投的好友在美食圈相遇。互联网最大的美食社区!https://www.xiangha.com/
14.美食天下美食天下是活跃的中文美食网站与厨艺交流社区,拥有海量的优质原创美食菜谱,聚集超千万美食家。我所有的朋友都是吃货,欢迎您加入!https://www.meishichina.com/
15.生鲜配送app界面设计模板这是一款关于新鲜食物配送app界面设计模板,您可以根据推荐的菜谱来购物食物,或者直接购买食物。 模板总共有19个页面,设计直观现代。Adobe XD格式文件,https://www.25xt.com/apppsd2/30296.html
16.医疗App开发费用详解:全面解析App开发所需成本App开发成本常常成为热议焦点,因为关系到投入与回报,其中包含诸多疑问和未知数。众多人怀揣着开发App的愿望,却因高昂费用而受阻。 打模板主意的费用考量 开发模板型App的成本大致稳定。在小规模App开发公司,具备基础功能的模板App价格可能只需几万元。以一款简单的菜谱App为例,其功能仅限于展示菜肴及基本的烹饪步骤,其https://www.7claw.com/2800479.html
17.下厨房下厨房美食菜谱网倡导在家烹饪、健康的生活方式,提供有版权的实用菜谱做法与饮食知识,提供厨师和美食爱好者一个记录、分享的平台。https://www.xiachufang.com/
18.本地生活app模板生活小窍门华为云帮助中心为你分享云计算行业信息,包含产品介绍、用户指南、开发指南、最佳实践和常见问题等文档,方便快速查找定位问题与能力成长,并提供相关资料和解决方案。本页面关键词:本地生活app模板。https://support.huaweicloud.com/topic/1069793-1-B
19.一键秒变大厨,拯救不会做菜的你——食万2.0智能炒菜机体验另外,食万2.0拥有完整的生态,经常更新各类食谱。通过WIFI功能,可以获取海量菜谱,手把手教你如何做菜。大屏图文直观的展示,带来更加丰富的信息,对于我这种菜鸟选手真的非常友好。 最后上个定妆照,其实乍一看食万2.0挺像PLUS版本的高级电磁炉的,只是它的功能可比传统电磁炉多得多了。 https://m.zhuxiaobang.com/article/7009481539033498143?channel_source=baidu_biji
20.www.lapierrebikes.com.cn/xxxr15637953/199785.html黄色污污APP 2天前 日美插大长腿嫩逼 性色av一区二区咪爱 5天前 八重神子裸体?开腿网站 人妻一区中出 2天前 18禁白丝制服自慰一区二区 香蕉网站官方入口在线观看 4天前 白袜鲜肉 Z00XXXX 3天前 欧美伦妇AAAAAA片 大香蕉怡春院 3天前 嗯啊开小嫩苞h调教视频 法院申请书模板 6天前 丰满http://www.lapierrebikes.com.cn/xxxr15637953/199785.html
21.美食菜谱app排行美食菜谱软件下载下载吧提供近期热门排行的安卓菜谱软件下载,本栏下所有app均为用户真实下载,并根据用户下载次数排列,本站是国内较为专业、权威的下载站之一,下载安卓美食菜谱软件就来绿色下载吧!https://www.xiazaiba.com/downlist/297_dd.html
22.A4打印纸模板下载A4打印纸模板v1.0.8最新版A4打印纸模板app下载,一款强大实用的智能打印纸综合服务平台,来A4打印纸模板app可以获取超多电子纸张模板,可以随时设计便捷内容并打印,有需要就来下载。 A4打印纸模板app描述 A4打印纸模板是一款提供电子纸张的App, 有超多A4纸张模板,帮助您在不同场景下使用, 可以用来练字、做作业、记笔记、日程计划、画图设计、清单https://www.qqtn.com/azsoft/728175.html
23.美食拍照App排行榜应用宝美食拍照app推荐在这里,活跃的美食杰出作者与热爱生活的美食家们,通过锅碗瓢盆、菜豆果蔬,为您呈现图文并茂、无比详细的菜谱,以及挥洒自如、满座惊艳的创意美食。 *** 不忘初心,我们致力做好用的美食APP *** 【简洁:清新风格,便捷操作】全新设计的简美界面,配合大量的高清美食图片,使得优质的内容更加凸显。【高效:海量菜谱,精准http://vip.diandian.com/phb/1973/7-1.html