.NET Core 下使用 ElasticSearch

快速入门

Elasticsearch 快速入门

ElasticSearch是一个开源的搜索引擎,建立在一个全文搜索引擎库 Apache Lucene™ 基础之上。Lucene 可以说是当下最先进、高性能、全功能的搜索引擎库,无论是开源还是私有。

但是 Lucene 仅仅只是一个库。为了充分发挥其功能,你需要使用 Java 并将 Lucene 直接集成到应用程序中。更糟糕的是,您可能需要获得信息检索学位才能了解其工作原理。Lucene 非常 复杂。

ElasticSearch也是使用 Java 编写的,它的内部使用 Lucene 做索引与搜索,但是它的目的是使全文检索变得简单, 通过隐藏 Lucene 的复杂性,取而代之的提供一套简单一致的 RESTful API。

然而,Elasticsearch 不仅仅是 Lucene,并且也不仅仅只是一个全文搜索引擎。它可以被下面这样准确的形容:

  • 一个分布式的实时文档存储,每个字段 可以被索引与搜索

  • 一个分布式实时分析搜索引擎

  • 能胜任上百个服务节点的扩展,并支持 PB 级别的结构化或者非结构化数据

官方客户端在Java、.NET、PHP、Python、Ruby、Nodejs和许多其他语言中都是可用的。根据 DB-Engines 的排名显示,ElasticSearch 是最受欢迎的企业搜索引擎,其次是Apache Solr,也是基于Lucene。

ES 开发指南

中文文档请参考:《Elasticsearch: 权威指南》[1]

英文文档请参考:《Elasticsearch Reference》[2]

下载:https://www.elastic.co/cn/downloads/

ES API文档

API Conventions[3]

Document APIs[4]

Search APIs[5]

Indices APIs[6]

cat APIs[7]

Cluster APIs[8]

Javascript api[9]

Logstash

Logstash Reference[10]

Configuring Logstash[11]

Input plugins[12]

Output plugins[13]

Filter plugins[14]

Kibana DevTools 快捷键

  • Ctrl+i 自动缩进

  • Ctrl+Enter 提交

  • Down 打开自动补全菜单

  • Enter 或 Tab 选中项自动补全

  • Esc 关闭补全菜单

pretty = true在任意的查询字符串中增加pretty参数,会让 Elasticsearch 美化输出(pretty-print)JSON响应以便更加容易阅读。

Kibana 命令

// 查询集群的磁盘状态
GET _cat/allocation?v

// 获取所有索引
GET _cat/indices

// 按索引数量排序
GET _cat/indices?s=docs.count:desc
GET _cat/indices?v&s=index

// 集群有多少节点
GET _cat/nodes

// 集群的状态
GET _cluster/health?pretty=true
GET _cat/indices/*?v&s=index

//获取指定索引的分片信息
GET logs/_search_shards

...

集群状态

curl -s -XGET 'http://<host>:9200/_cluster/health?pretty'

//系统正常,返回的结果
{
  "cluster_name" : "es-qwerty",
  "status" : "green",
  "timed_out" : false,
  "number_of_nodes" : 3,
  "number_of_data_nodes" : 3,
  "active_primary_shards" : 1,
  "active_shards" : 2,
  "relocating_shards" : 0,
  "initializing_shards" : 0,
  "unassigned_shards" : 0,
  "delayed_unassigned_shards" : 0,
  "number_of_pending_tasks" : 0,
  "number_of_in_flight_fetch" : 0,
  "task_max_waiting_in_queue_millis" : 0,
  "active_shards_percent_as_number" : 100.0
}

检索文档

POST logs/_search
{
  "query":{
    "range":{
      "createdAt":{
        "gt":"2020-04-25",
        "lt":"2020-04-27",
        "format": "yyyy-MM-dd"
      }
    }
  },
  "size":0,
  "aggs":{
    "url_type_stats":{
      "terms": {
        "field": "urlType.keyword",
        "size": 2
      }
    }
  }
}

POST logs/_search
{
  "query":{
    "range":{
      "createdAt":{
        "gte":"2020-04-26 00:00:00",
        "lte":"now",
        "format": "yyyy-MM-dd hh:mm:ss"
      }
    }
  },
  "size":0,
  "aggs":{
    "url_type_stats":{
      "terms": {
        "field": "urlType.keyword",
        "size": 2
      }
    }
  }
}

POST logs/_search
{
  "query":{
    "range": {
      "
  • 1
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
您好!对于在.NET Core使用Elasticsearch,您可以使用官方提供的Elasticsearch .NET客户端库。这个库为您提供了一个简单而强大的方式来与Elasticsearch进行交互。 首先,您需要在.NET Core项目中安装Elasticsearch .NET客户端库。您可以通过NuGet包管理器或通过命令行来执行安装。在安装完成后,您可以在代码中导入所需的命名空间。 接下来,您需要与Elasticsearch建立连接。您可以使用`ConnectionSettings`类来配置连接参数,例如Elasticsearch服务器的URL、索引名称等。然后,使用`ElasticClient`类创建一个客户端实例来执行各种操作,如索引创建、文档插入、搜索等。 以下是一个简单的示例代码,演示如何在.NET Core使用Elasticsearch进行基本操作: ``` using Elasticsearch.Net; using Nest; class Program { static void Main(string[] args) { var settings = new ConnectionSettings(new Uri("http://localhost:9200")) .DefaultIndex("your_index_name"); var client = new ElasticClient(settings); // 创建索引 var createIndexResponse = client.Indices.Create("your_index_name", c => c .Map<Document>(m => m.AutoMap()) ); // 插入文档 var document = new Document { Id = 1, Title = "Hello World", Content = "This is a sample document" }; var indexResponse = client.IndexDocument(document); // 搜索文档 var searchResponse = client.Search<Document>(s => s .Query(q => q .Match(m => m .Field(f => f.Title) .Query("Hello") ) ) ); // 输出搜索结果 foreach (var hit in searchResponse.Hits) { Console.WriteLine($"Id: {hit.Source.Id}, Title: {hit.Source.Title}, Content: {hit.Source.Content}"); } } } public class Document { public int Id { get; set; } public string Title { get; set; } public string Content { get; set; } } ``` 这只是一个简单的示例,您可以根据自己的需求扩展和定制。希望对您有所帮助!如果您有任何进一步的问题,请随时提问。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值