
全文搜索引擎之ElasticSearch和Solr
文章平均质量分 72
Elasticsearch是一个基于Lucene库的搜索引擎。它提供了一个分布式、支持多租户的全文搜索引擎,具有HTTP Web接口和无模式JSON文档。Elasticsearch是用Java开发的,并在Apache许可证下作为开源软件发布。
.NET跨平台
比较认真。编程就是算法和数据结构,算法和数据结构是编程的灵魂。
展开
-
.NET Core 下使用 ElasticSearch
新增可以多来几次,因为默认是没有数据的,多添加一点可以测试分页是否ok,这里就不再演示了。如果你有安装kibana,现在可以满怀惊喜的去查看一下刚才添加的数据。一切准备就绪,现在满怀期待的运行项目,打开swagger界面。所以接下来不用说你也知道改干嘛,实现这个仓储接口,添加。也就是一个抽象类,当我们集成此基类的时候需要重写。新建一个webapi项目,然后安装两个组件。可以看到,数据已经安安静静的躺在这里了。,简单封装一个基类用于仓储的集成使用。中添加服务,不然无法使用依赖注入。现在去写接口,添加一个。转载 2023-07-29 12:42:49 · 714 阅读 · 0 评论 -
.net core with 微服务 - Elastic APM
上一次我们介绍了Seq日志聚合组件。这次要给大家介绍的是Elastic APM ,一款应用程序性能监控组件。APM 监控围绕对应用、服务、容器的健康监控,对接口的调用链、性能进行监控。在我们实施微服务后,由于复杂的业务逻辑,服务之间的调用会像蜘蛛网一样复杂。有了调用链监控后服务之间的调用可以用图像的方式展示出来,每个请求的性能,响应等都会记录下来。对于提前防范问题,以及排查问题有非常大的意义。Elastic APM大家对 ELK 套件一定非常熟悉。ELastic APM 同样也是 Elastic 系列产转载 2022-05-17 14:54:25 · 600 阅读 · 0 评论 -
如何在我们的Asp.NET Core应用程序中使用ElasticSearch高级功能
在上一篇文章中,我们讨论了将ElasticSearch用作简单的全文本搜索引擎,如何快速安装和配置它以及如何将其集成到我们的.NET Web应用程序中。今天,我们仍然要在电子商务网站中向您展示如何使用ElasticSearch的许多功能来改善搜索。我们使用了没有嵌套类的平面Product类来轻松管理搜索,但是这种方法有很多限制。然后,我们引入了一个新的数据模型,以便任何对象都是要建模的实体。一个文档可以包含无限数量的相关字段和值(数组,简单和复杂类型),并保存为JSON文档。我们的模型产品类别已变为:转载 2022-04-30 12:58:04 · 525 阅读 · 0 评论 -
如何在ASP.NET Core中集成ElasticSearch
我敢打赌,您肯定会被要求向Web应用程序中添加高级搜索功能,而且通常是全文的类似Google的搜索。在技术电子商务的开发过程中,我们被要求允许用户对产品进行高级研究,以便他们可以高效,完全地找到所需的内容。我们基于对象的所有字段上给定字符串的搜索尝试了自定义搜索的实现。为了优化时间,我们尝试在服务和数据库级别之间添加一个缓存层,以避免对数据库造成过多压力,但是我们对结果不满意。然后,我们在市场上搜索了可以满足我们需求的第三方产品,经过深入分析,我们选择采用ElasticSearch:一个基于REST转载 2022-04-04 00:55:01 · 844 阅读 · 1 评论 -
Elasticsearch(六)【NEST高级客户端--连接】
连接NEST使用合理的默认值来连接和与Elasticsearch集群进行交互,但提供了许多配置选项和组件来改变此行为配置选项连接池修改默认连接使用证书配置选项使用Elasticsearch.Net和NEST连接到Elasticsearch很容易,但是您可能希望更改默认的连接行为。 ConnectionSettings(和ConnectionConfiguration for Elastic翻译 2017-05-07 19:40:00 · 6962 阅读 · 0 评论 -
ElasticsearchCRUD使用(十)【Elasticsearch类型与ElasticsearchCRUD的映射】
本文介绍如何使用ElasticsearchCRUD来定义Elasticsearch中类型的映射。 可以使用ElasticsearchCRUD的属性来定义Elasticsearch中的Core Types定义。映射属性可以使用ElasticsearchCRUD中的属性定义映射定义。 支持大部分Elasticsearch核心类型定义。 下面是一个使用Elasticsearch映射定义的类的例子。publ翻译 2017-05-11 22:36:49 · 1078 阅读 · 0 评论 -
ElasticsearchCRUD使用(九)【Elasticsearch父子,孙子节点文件和路由】
本文介绍如何使用ElasticsearchCRUD在Elasticsearch中创建父,子和孙子文档。 如果创建相互关联的文档,那么文件全部保存到Elasticsearch中的同一个分片很重要。 搜索性能更好,如果可以为搜索定义特定的分片。当创建父文档和子文档关系时,父定义对于子文档是足够的。 这样可确保将子文档保存到同一分片中。 一旦使用了孙子文档,就需要一个路由定义,否则孙子文档不会总是被保存到翻译 2017-05-11 22:27:25 · 2592 阅读 · 0 评论 -
ElasticsearchCRUD使用(八)【使用Elasticsearch和WebAPI导出CSV】
本文演示如何使用Web API将数据从Elasticsearch导出到CSV文件。 使用_search扫描和滚动从Elasticsearch检索数据。 该API可以非常快速地检索数据,无需任何排序。 然后使用来自Jordan Gray的WebApiContrib.Formatting.Xlsx将数据导出到CSV文件。 导出的进度显示在使用SignalR(MVC razor视图)的HTML页面中。建立翻译 2017-05-11 22:21:41 · 3258 阅读 · 0 评论 -
Elasticsearch(八)【NEST高级客户端--Mapping映射】
要使用NEST与Elasticsearch进行交互,我们需要能够将我们的解决方案中的POCO类型映射到存储在Elasticsearch中的反向索引中的JSON文档和字段。本节介绍NEST中可用的所有不同功能,使POCO和Elasticsearch变得轻而易举。在Elasticsearch中显式映射文档对于为给定的问题域提供定制搜索解决方案至关重要。虽然Elasticsearch能够基于遇到的该类型的翻译 2017-05-07 22:29:47 · 6759 阅读 · 0 评论 -
Elasticsearch(七)【NEST高级客户端--序列化】
序列化NEST的默认JSON序列化了解如何正确序列化所有请求和响应类型,以及正确处理您的POCO。 然而,有时候,您可能希望通过提供自己的序列化程序或修改NEST的序列化器的行为来改变此行为。 改变序列化器 修改默认序列化器改变序列化器NEST使用JSON.Net将JSON的响应序列化和反序列化。尽管JSON.Net做好了序列化,但是由于某种原因,您可能希望使用自己的JSON序列化程序。 Ela翻译 2017-05-07 21:49:23 · 2853 阅读 · 0 评论 -
Elasticsearch(五)【NEST高级客户端--开始】
高级客户端ElasticClient提供了一种强类型查询DSL,它与Elasticsearch查询DSL一对一映射。它可以从Visual Studio中的Package Manager Console安装Install-Package NESTNEST是一个高级别的Elasticsearch .NET客户端,仍然非常贴近原始的Elasticsearch API。 所有的请求和响应通过类型暴露,使其成翻译 2017-05-07 11:38:05 · 6907 阅读 · 0 评论 -
ElasticsearchCRUD使用(十一)【Elasticsearch同义词分析器】
本文介绍如何使用ElasticsearchCRUD在Elasticsearch中设置和使用自定义分析器。 创建具有自定义同义词词元过滤器的分析器并将其添加到索引中。 如果您搜索任何同义词,您将找到所有可能的文本的所有匹配。创建自定义同义词分析器在ElasticsearchCRUD中使用自定义分析器,过滤器或分词器创建索引非常简单。 强类型的类配置可用于所有类型以及所有默认可能性的常量定义。 在下面的翻译 2017-05-11 22:41:58 · 881 阅读 · 0 评论 -
ElasticsearchCRUD使用(十二)【Elasticsearch的German分析器】
本文介绍如何使用Elasticsearch的默认。 创建使用ElasticsearchCRUD的索引,它使用德语分析器对搜索和索引进行映射。可以通过在ElasticsearchString属性中定义Analyzer属性来使用德语分析器。 此属性为搜索和索引添加分析器。 该属性可以使用任何字符串,因此也可以定义自定义分析器。 Fields属性也被设置。 这被使用,以便原始字符串也可以用于搜索翻译 2017-05-11 22:44:37 · 708 阅读 · 0 评论 -
ElasticsearchCRUD使用(十三)【Elasticsearch谷歌地图搜索的MVC应用】
本文介绍如何创建一个使用谷歌地图和Elasticsearch的MVC应用程序进行geo_distance搜索,并找到最近的点(文档)到您的位置。 Elasticsearch索引使用geo_point来定义每个文档的位置。Elasticsearch支持GeoJson格式。Elasticsearch索引和类型使用以下模型创建:public class MapDetail{ public lo翻译 2017-05-11 22:47:43 · 1928 阅读 · 0 评论 -
ElasticsearchCRUD使用(十四)【ElasticsearchCRUD搜索查询和过滤】
本文演示如何使用ElasticsearchCRUD进行搜索。 API提供了可以与Elasticsearch的搜索API一起使用的搜索模型。 您可以搜索同步/异步,并提供您自己的JSON字符串或使用搜索模型。开始:ElasticsearchCRUD提供了一些数字或搜索的可能性。 这篇文章展示了不同的例子,这些例子应该有助于理解或使它更容易使用搜索模型参数。 当配置和创建模型时,可以使用以下方法作为HT翻译 2017-05-11 22:49:59 · 1067 阅读 · 0 评论 -
ElasticsearchCRUD使用(十五)【批量插入数据】
本文介绍如何使用别名和bulk插入大量文档来设置Elasticsearch索引。 批量插入大量文档时,可以通过关闭刷新间隔(RefreshInterval="-1")并关闭复制来提高性能。 插入完成后,根据您的要求将这些设置设置为所需的值。要创建索引,使用TestDto类。 这被映射到testdtos_v1索引和testdto类型。 然后将一个别名testdtos添加到索引中。 这是非常有用的,如果翻译 2017-05-11 22:54:41 · 2789 阅读 · 0 评论 -
ElasticsearchCRUD使用(十六)【Elasticsearch聚合】
本文介绍如何使用ElasticsearchCRUD实现Elasticsearch聚合搜索请求和响应。Elasticsearch聚合Elasticsearch聚合API允许您在近实时或即时的时候对数据进行总结,计算,分组。这些聚合可以实现子聚合,可以根据需要再次实现更多的子聚合。这允许非常灵活的API。 ElasticsearchCRUD支持以下聚合:最小聚合,最大聚合,总和,平均聚合,统计量,扩展统翻译 2017-05-11 22:57:04 · 1528 阅读 · 0 评论 -
ElasticsearchCRUD使用(十七)【Elasticsearch搜索多个指标和类型】
本文介绍如何使用ElasticsearchCRUD在多个索引和类型的Elasticsearch中进行搜索。 Elasticsearch提供了一个指数过滤器,一个类型过滤器和一个指数查询,可以在使用多个索引和类型时使用。 汇总搜索和计数请求也可以使用多个指数和类型执行。该示例在单个索引中使用父,子,子孙映射,使用路由的父_Id。 这确保了孙子文档和父文档被保存到同一个分片。 创建映射后,将在批量请求中翻译 2017-05-11 23:02:10 · 824 阅读 · 0 评论 -
ElasticsearchCRUD使用(十八)【进行MVC搜索Elasticsearch高亮】
本文介绍如何在MVC应用程序中使用Elasticsearch高亮显示搜索结果。该应用程序执行一个简单的Elasticsearch模糊查询,高亮显示的结果显示在Razor 视图中。在使用高亮显示请求的搜索可以发送到Elasticsearch之前,需要创建一个索引。 FastestAnimal类用于此。public class FastestAnimal{ public long Id { g翻译 2017-05-17 17:28:21 · 1507 阅读 · 0 评论 -
ElasticsearchCRUD使用(十九)【索引热身】
本文介绍如何使用索引预热与ElasticsearchCRUD。 预热对于最常用的查询很有用,可以帮助您提高性能。 在创建索引时,可以添加一个预热器,在索引之后添加或从索引中删除。 还可以在全局或每种索引类型中添加预热器。创建索引时添加预热器在创建索引时,可以加一个预热器。 IndexCreate方法为此提供了一个Warmers属性函数。 Warmers列表可以接受查询或聚合。_context.Ind翻译 2017-05-17 21:52:19 · 1973 阅读 · 1 评论 -
爬拉勾网数据,存Elasticsearch进行归类分析
main.py代码如下:import requestsimport jsonfrom elasticsearch import Elasticsearchfrom datetime import datetimefrom queue import Queuefrom threading import Threadimport timeimport randomclass转载 2017-05-03 13:13:00 · 1760 阅读 · 0 评论 -
ElasticsearchCRUD使用(七)【Elasticsearch中的实时重建索引】
该文章演示了如何使用ElasticsearchCRUD在Elasticsearch中进行现场重建索引。 reindex使用扫描并滚动获取数据,然后使用批量插入更新到新的索引。 reindex支持别名映射,使得可以进行实时索引。设置文档搜索引擎和索引AdventureWorks2012用于填充搜索引擎的数据。 从Entity Person添加person索引。 此代码创建一个新的索引persons翻译 2017-05-11 22:14:16 · 1309 阅读 · 1 评论 -
Elasticsearch(四)【Elasticsearch.Net之Post数据】
Post数据低层客户端允许您直接发布string 或byte[] 数组。 除此之外,如果您传递一个字符串或对象的集合,它们将使用Elasticsearch的特殊bulk/multi (批量/多)格式进行序列化。隐式转换即使在低级别客户端上PostData的参数需要PostData ,您可以依靠隐式转换来完全抽象PostData的概念。 您可以从以下类型隐式转换stringbyte[]collect翻译 2017-03-22 22:54:02 · 2638 阅读 · 0 评论 -
ElasticSearch5.2.2 基本概念和集群配置详解
一、说明几个重要的配置文件#/etc/sysconfig/elasticsearch 配置elasticsearch环境变量 #/etc/elasticsearch/elasticsearch.yml 配置elasticsearch集群#/etc/elasticsearch/jvm.options 配置elasticsearch的jvm参数#/etc/ela转载 2017-05-05 11:55:22 · 3208 阅读 · 0 评论 -
在Windows上安装Elasticsearch 5.2.2
Elasticsearch可以使用.zip软件包安装在Windows上。 elasticsearch-service.bat命令,它将设置Elasticsearch作为服务运行。Elasticsearch的最新稳定版在Download Elasticsearch下载,其他的版本在Past Releases page下载。Elasticsearch需要java8或者更高的Java版本。 1.下载和安装转载 2017-03-21 13:07:06 · 3300 阅读 · 1 评论 -
windows下安装elasticsearch
1.下载elasticsearch-2.3.3.zip2.需要jdk环境,这里不做介绍。查看是否有Java环境:java -version3.解压解压elasticsearch2.3.3 到某个目录,例如 D:\softwares_diy\elasticsearch-2.3.3 。4.安装安装、启动方法 (1)进入 D:\softwares_diy\elasticsearch-2.3.3\bin 目转载 2017-03-20 17:08:30 · 1263 阅读 · 1 评论 -
Elasticsearch.Net使用(一)【入门篇】
首先去官网下载Elasticsearch 2.3.4安装包,解压后,在cmd命令行进入安装目录,再进入 bin目录,运行elasticsearch.bat命令elasticsearch插件elasticsearch-head安装:bin目录下执行命令plugin -install mobz/elasticsearch-head然后开始.net编程,构建控制台应用程序Progra原创 2016-08-06 22:25:56 · 13009 阅读 · 1 评论 -
Elasticsearch.Net使用(二)【MVC4 图书管理系统】
首先项目结构图:Model层的相关代码如下:Book.cs代码如下:public class Book { [Key] [DatabaseGenerated(DatabaseGeneratedOption.Identity)] public Guid Id { get; set; } [Max原创 2016-08-07 19:19:14 · 6146 阅读 · 2 评论 -
ElasticsearchCRUD使用(一)【介绍】
为什么选择ElasticsearchCRUD我想要一个简单的方法来将我的应用程序实体添加,更新或删除到Elasticsearch文档中。 单个上下文可以与许多实体类型一起使用,并且可以根据需要进行非常容易的调整,例如对于所有属性进行小写处理,或者可以定义任何特定的映射。 ElasticLINQ目前没有提供CRUD操作,虽然您可以使用NEST几乎满足任何要求(我也认为它是一个很棒的API),但我翻译 2017-05-11 20:53:05 · 1136 阅读 · 0 评论 -
Elasticsearch搜索类型(query type)详解
es在查询时,可以指定搜索类型为QUERY_THEN_FETCH,QUERY_AND_FEATCH,DFS_QUERY_THEN_FEATCH和DFS_QUERY_AND_FEATCH。那么这4种搜索类型有什么区别? 分布式搜索背景介绍: ES天生就是为分布式而生,但分布式有分布式的缺点。比如要搜索某个单词,但是数据却分别在5个分片(Shard)上面,这5个分片可能在5台主机上面。因为全文搜索天转载 2017-05-02 14:34:20 · 6383 阅读 · 1 评论 -
Linux下Elasticsearch安装、配置及示例
简介开始学es,我习惯边学边记,总结出现的问题和解决方法。本文是在两台Linux虚拟机下,安装了三个节点。本次搭建es同时实践了两种模式——单机模式和分布式模式。条件允许的话,可以在多台机器上配置es节点,如果你机器性能有限,那么可以在一台虚拟机上完成多节点的配置。 如图,是本次3个节点的分布。 虚拟机主机名 IP es节点 master 192.168.137.100 no转载 2017-05-02 14:07:49 · 1050 阅读 · 0 评论 -
Elasticsearch中常用的API
elasticsearch中常用的API分类如下:文档API: 提供对文档的增删改查操作搜索API: 提供对文档进行某个字段的查询索引API: 提供对索引进行操作,查看索引信息等查看API: 按照更直观的形式返回数据,更适用于控制台请求展示集群API: 对集群进行查看和操作的API下面简单的一一介绍记录一下。文档类APIIndex API: 创建并建立索引PUT twitter/tweet/1{转载 2017-05-01 10:52:47 · 3196 阅读 · 0 评论 -
IK分词使用示例
创建一个索引,使用 ik创建一个名叫 iktest 的索引,设置它的分析器用 ik ,分词器用 ik_max_word,并创建一个 article 的类型,里面有一个 subject 的字段,指定其使用 ik_max_word 分词器curl -XPUT 'http://localhost:9200/iktest?pretty' -d '{ "settings" : { "a转载 2017-04-28 15:39:08 · 2720 阅读 · 0 评论 -
热更新 IK 分词使用方法
下载,解压,安装1、进入https://github.com/medcl/elasticsearch-analysis-ik/,找到ik分词器对应的版本为5.1.1,直接下载其release的版本(避免maven打包);2、在/usr/share/elasticsearch/plugins下建立ik目录: mkdir /usr/share/elasticsearch/plugins/ik3、复制文转载 2017-04-28 14:57:17 · 6918 阅读 · 1 评论 -
Elasticsearch5.2.2进行数据聚合测试
我们将学习各种聚合以及它们的语法,但是最好的学习方法还是通过例子。一旦你了解了如何思考聚合以及如何对它们进行合适的嵌套,那么语法本身是不难的。让我们从一个例子开始。我们会建立一个也许对汽车交易商有所用处的聚合。数据是关于汽车交易的:汽车型号,制造商,销售价格,销售时间以及一些其他的相关数据。首先,通过批量索引(Bulk-Index)来添加一些数据:POST /cars/transactions/_b转载 2017-05-05 15:59:26 · 2807 阅读 · 0 评论 -
ElasticsearchCRUD使用(二)【简单的文档进行搜索的MVC应用程序】
搜索Elasticsearch中的文档该应用程序使用ElasticsearchCRUD访问Elasticsearch。 API可以使用任何DTO或实体类,并将其自动映射到Elasticsearch索引并使用类类型键入。 默认索引是类的类型,所有字符都转换为小写字符。 默认类型是小写字符的类型名称。 如果Elasticsearch需要不同的映射,这可以很容易地改变。 例如,在Elasticsearch翻译 2017-05-11 20:58:14 · 821 阅读 · 0 评论 -
Elasticsearch(九)【NEST高级客户端--分析器】
分析分析是将文本(如任何电子邮件的正文)转换为添加到反向索引中进行搜索的tokens 或terms 的过程。 分析由analyzer 执行,分析器可以是内置分析器或每个索引定义的定制分析器。 书写分析器 测试分析器书写分析器有时候,您可以通过配置Elasticsearch内置分析器的工作原理,或将分析组件结合在一起来构建定制分析器,以定制方式分析文本。分析链分析器由三个组件构成: 0个或更多字符翻译 2017-05-07 22:53:06 · 3487 阅读 · 0 评论 -
Elasticsearch(二)【Elasticsearch.Net基本使用】
低级客户端ElasticLowLevelClient是一个低级的,无依赖的客户端,对如何构建和表示您的请求和响应没有意见。它可以从Visual Studio中的包管理器控制台安装使用Install-Package Elasticsearch.Net连接要连接到本地运行在http://localhost:9200上的Elasticsearch就像实例化客户端的一个新实例一样简单var lowlevel翻译 2017-03-22 14:09:45 · 9363 阅读 · 2 评论 -
Elasticsearch(三)【.Net客户端API规范--生命周期】
生命周期如果您使用的是IOC容器,那么它总是有助于了解您的对象生命周期中的最佳实践一般来说,我们建议人们将ElasticClient实例注册为单例模式。客户端是线程安全的,所以在线程之间共享一个实例是很好的。然而,放大实际的移动部分,在应用程序的大部分时间内受益最大的是ConnectionSettings;缓存是每个ConnectionSettings。在某些应用程序中,使用不同的连接设置注册多个单翻译 2017-03-22 22:11:40 · 1789 阅读 · 0 评论 -
Elasticsearch(一)【.Net客户端介绍】
介绍您已到达Elasticsearch.Net和NEST的文档页面,Elasticsearch的两个官方.NET客户端。为什么要两个客户? Elasticsearch.Net是一个非常低级别,依赖自由的客户端,没有对如何构建和表示您的请求和响应的意见。它已经抽象得足够,以便所有的Elasticsearch API端点都被表示为方法,但没有太多,妨碍你如何构建你的json /请求/响应对象。它还内置翻译 2017-03-22 12:58:50 · 4100 阅读 · 2 评论