elasticsearch数据库使用
elasticsearch的一个最为显著的优点:快速全文检索。关于elasticsearch 全文检索的原理,请看:https://blog.csdn.net/wolfcode_cn/article/details/81907195
一、es 安装
参考官网安装教程:https://www.elastic.co/guide/en/elasticsearch/reference/6.6/zip-targz.html
教程中介绍了多种操作系统多种安装方式:
本篇选择的是linux操作系统下,手动下载安装包的方式安装:
- wget https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-6.6.2.tar.gz
- wget https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-6.6.2.tar.gz.sha512
- shasum -a -c elasticsearch-6.6..tar.gz.sha512
- tar -xzf elasticsearch-6.6..tar.gz
- cd elasticsearch-6.6./
安装完毕之后,测试是否成功:
- ./bin/elasticsearch
此开启方式是前台开启,如果要后台运行
- ./bin/elasticsearch &
curl -X GET "localhost:9200/"
得到下面的信息:
下面设置在守护进程中运行,开机可以自启动es:
- [program:elasticsearch]
- command=/home/shippingadmin/elasticsearch-6.6./bin/elasticsearch
- startsecs=
- autostart=true
- autorestart=true
- stderr_logfile=/var/log/applogs/elasticsearch.err.log
- stdout_logfile=/var/log/applogs/elasticsearch.out.log
- user=shippingadmin
- stopsignal=INT
二、es 数据库操作
引入 nuget 包
Install-Package NEST
连接es代码:
- public static ElasticClient Client;
- /// <summary>
- /// 初始化es连接
- /// </summary>
- public static void Init()
- {
- //单节点
- var node = new Uri("http://192.168.1.23:8920");
- //指定默认索引是可选的,但如果没有为给定请求推断索引,NEST可能会引发异常,这里的默认索引是skuindex
- var settings = new ConnectionSettings(node)
- .DefaultMappingFor<Sku>(m => m.IndexName("skuitem"));
- //使用与群集中的三个Elasticsearch节点的地址对接的SniffingConnectionPool,并且客户端将使用此类型的池来维护可以以循环方式发送请求的群集中的可用节点列表
- //var uris = new[]
- //{
- // new Uri("http://localhost:9200"),
- // new Uri("http://localhost:9201"),
- // new Uri("http://localhost:9202"),
- //};
- //var connectionPool = new SniffingConnectionPool(uris);
- //var settings = new ConnectionSettings(connectionPool)
- // .DefaultMappingFor<Sku>(m => m.IndexName("SKU"));
- Client = new ElasticClient(settings);
创建索引:
- /// <summary>
- /// 创建索引,并建立POCO映射关系,这在es第一次插入sku数据时,是必要的,重复插入并不会报错
- /// </summary>
- /// <returns></returns>
- public static bool CreateIndex()
- {
- var createIndexResponse = Client.CreateIndex("skuitem", c => c
- .Mappings(ms => ms
- .Map<Sku>(m => m.AutoMap())
- )
- );
- return createIndexResponse.IsValid;
- }
定义Entity:
- [ElasticsearchType(IdProperty = "Id")]
- public class Sku
- {
- public System.Guid Id { get; set; }
- [Keyword]
- public string Code { get; set; }
- [Keyword]
- public string SerialNumber { get; set; }
- public List<ItemTitle> SearchTitles { get; set; }
- }
- public class ItemTitle
- {
- public Guid Id { get; set; }
- [Keyword]
- public string Title { get; set; }
- [Keyword]
- public string CultureCode { get; set; }
- }
插入数据,并做查询:
- static void Main(string[] args)
- {
- SkuManager.Init();
- SkuManager.CreateIndex();
- List<Sku> skus = new List<Sku>()
- {
- new Sku()
- {
- Id=Guid.NewGuid(),
- Code="sku1",
- SerialNumber="abc1234",
- SearchTitles=new List<ItemTitle>()
- {
- new ItemTitle()
- {
- Id=Guid.NewGuid(),
- CultureCode="cn",
- Title="ddkdkdkdkdkdkdk",
- },
- new ItemTitle()
- {
- Id=Guid.NewGuid(),
- CultureCode="en",
- Title="ddkdkdkdkdkdkdk",
- }
- }
- },
- new Sku()
- {
- Id=Guid.NewGuid(),
- Code="sku2",
- SerialNumber="abc1dddfd234",
- SearchTitles=new List<ItemTitle>()
- {
- new ItemTitle()
- {
- Id=Guid.NewGuid(),
- CultureCode="cn",
- Title="ddkdkdkdkdkdksdfsdk",
- },
- new ItemTitle()
- {
- Id=Guid.NewGuid(),
- CultureCode="en",
- Title="ddkdkdksdfdkdkdkdk",
- }
- }
- }
- };
- var indexResult = SkuManager.Client.IndexMany<Sku>(skus);
- var searchResult1 = SkuManager.Client.Search<Sku>(s => s
- .From()
- .Size()
- .Query(q => q
- .Match(m => m
- .Field(f => f.SerialNumber)
- .Query("fd")
- )
- )
- );
- var query = new List<Func<QueryContainerDescriptor<Sku>, QueryContainer>>();
- query.Add(sku => sku.Wildcard(tm => tm.Field(f => f.SerialNumber).Value("*fd*")));
- query.Add(sku => sku.Term(tm => tm.Field(f => f.Code).Value("sku2")));
- var searchResult2 = SkuManager.Client.Search<Sku>(s => s
- .Query(q => q.Bool(b => b.Must(query))
- )
- ).Documents.ToList();
- }
总结:1.es是用java代码编写的数据存储以及提供了丰富的数据操作API,所以在windows或者linux安装es之前,是需要先安装java sdk,并设置环境变量;关于环境变量的文章请参考:
https://www.cnblogs.com/jasonzeng/p/8302171.html
https://blog.csdn.net/u012498149/article/details/78771729
2.es相对应的客户端是 kibana,提供了强大的数据查询,图表,统计等功能,后面可能要针对 kibana作一次学习总结;
3.现在es最新版本,7.x已经出来,安装完之后,用elasticsearch.net,是不兼容的,因为elasticsearch.net,只支持到 6.x版本;
4.关于elasticsearch.net,更多的数据库操作,请看官网,其中有low lever client, high lever client, 本篇用的是high level client: https://www.elastic.co/guide/en/elasticsearch/client/net-api/6.x/nest.html
elasticsearch数据库使用的更多相关文章
- [转帖]Elasticsearch数据库
Elasticsearch数据库 2018-05-06 11:30:48 七色米 阅读数 23634更多 分类专栏: 数据库 版权声明:本文为博主原创文章,遵循CC 4.0 BY-SA版权协议,转 ...
- elasticSearch数据库、skywalking集群部署
Centos6上面安装elasticsearc数据库的集群 安装的是6.3.2版本,安装之前首先要先安装jdk1.8版本 安装之前首先需要关闭防火墙 Centos6 sudo service ipta ...
- Elasticsearch数据库 | Elasticsearch-7.5.0应用搭建实战
Elasticsearch 是一个可用于分布式以及符合RESTful 风格的搜索和数据分析引擎.-- Elastic Stack 官网 搭建Elasticsearch的"那些事儿" ...
- Elasticsearch数据库优化实战:让你的ES飞起来
摘要:ES已经成为了全能型的数据产品,在很多领域越来越受欢迎,本文旨在从数据库领域分析ES的使用. 本文分享自华为云社区<Elasticsearch数据库加速实践>,原文作者:css_bl ...
- ElasticSearch数据库同步插件logstash
1.下载和elasticsearch 相同版本的logstash. 2.进行解压后,进入bin下,新建一个文件mysql.conf,并输入 input { stdin{ }} output { std ...
- Elasticsearch数据库 | Elasticsearch-7.5.0应用基础实战
Elasticsearch 是一个可用于分布式以及符合RESTful 风格的搜索和数据分析引擎.-- Elastic Stack 官网 关于Elasticsearch的"爱恨情仇" ...
- elasticsearch数据库(ES)
1. http://blog.csdn.net/cnweike/article/details/33736429 http://www.oschina.net/translate/elasticsea ...
- 【ElasticSearch】给ElasticSearch数据库配置慢查询日志
给ElasticSearch引擎配置慢查询日志,可以实时监控搜索过慢的日志.虽然ElasticSearch以快速搜索而出名,但随着数据量的进一步增大或是服务器的一些性能问题,会有可能出现慢查询的情况. ...
- 什么是Elasticsearch
一个采用Restfull API 标准的高扩展性和高可用性的实时数据分析的全文搜索工具 Elasticsearch 涉及到的一些概念: 1.Node(节点): 单个的装有Elasticsearch服务 ...
随机推荐
- Spark GraphX 属性图操作
package Spark_GraphX import org.apache.spark.graphx._ import org.apache.spark.rdd.RDD import org.apa ...
- 基于Flink的视频直播案例(下)
目录 直播数字化运营 结果写入Elasticsearch 第二种思路 Flink实现总结 Elasticsearch部分 Kibana部分 直播数字化运营 业务目标 全站观看直播总人数以及走势 房间直 ...
- Redis设置认证密码
1.找到Redis里的redis.conf配置文件:搜素requirepass所在的行,格式为:requirepass password 2.redis-cli客户端登陆格式:redis-cli -a ...
- 栗染-Error parsing D:\sdkforas\android-sdk-windows\system-images\android-24\android-wear\x86\devices.xml
每次打开android virtual device manager 下面都会出现这样的问题 解决办法: 打开自己安装的sdk目录,找到/tools/lib/devices.xml去替换图中路径里面的 ...
- bzoj 1231: [Usaco2008 Nov]mixup2 混乱的奶牛【状压dp】
设f[i][j]为奶牛选取状态为i,最后一头选的为j,转移直接f[k][(1<<(k-1)|i]+=f[j][i] #include<iostream> #include< ...
- [App Store Connect帮助]三、管理 App 和版本(7)移除 App
若要在“我的 App”主视图中移除 App,要先将此 App 从 App Store 中移除,并将所有与之关联的 App 内购买项目下架. 此外,仅当 App 的所有版本均处于下列状态之一时方可移除: ...
- 略微讲讲最近的 webpack 该如何加快编译
首先假设 基础的环境是有 creat-react-app 所创建的 即所有基础的loader,插件的 cache 都已经缓存了 在这种情况下想加速,真是很难 不过,有一个插件是可以观察 各个模块所花的 ...
- Head Html Css 第二版笔记
一. 引用 <blockquote>ago aog aogag </blockquote> 则是引用一大段文字并独立显示 二. <a> 创建目的地 <h2&g ...
- JAVA POI的使用
最近开发遇到了要通过Java处理Excel文件的场景,于是乎在网上了解了一番,最后自己做了个demo,已上传gitee:https://gitee.com/github-26930945/JavaCo ...
- [转]c++中的string常用函数用法总结
标准c++中string类函数介绍 注意不是CString之所以抛弃char*的字符串而选用C++标准程序库中的string类,是因为他和前者比较起来,不必 担心内存是否足够.字符串长度等等,而且作为 ...