.Net Core集成Elasticsearch避坑

文章讲述了作者在使用Elasticsearch的client.IndexAsync方法时遇到405错误,原因是试图用PUT方法创建无ID的用户索引。解决办法是修改为不依赖实体类ID的POST方法。同时,作者分享了查阅源码以理解问题的过程。
摘要由CSDN通过智能技术生成

1、当我使用ES的client.IndexAsync(user,"user")报错了

Invalid Elasticsearch response built from a unsuccessful (405) low level call on PUT: /user/_doc # Audit trail of this API call: - [1] BadResponse: Node: http://127.0.0.1:9200/ Took: 00:00:00.4482830 # OriginalException: Elastic.Transport.TransportException: Request failed to execute. Call: Status code 405 from: PUT /user/_doc. ServerError: Type: Reason: "Incorrect HTTP method for uri [/user/_doc] and method [PUT], allowed: [POST]" # Request: <Request stream not captured or already read to completion by serializer. Set DisableDirectStreaming() on TransportConfiguration to force it to be set on the response.> # Response: {"error":"Incorrect HTTP method for uri [/user/_doc] and method [PUT], allowed: [POST]","status":405}

我百思不得其解,官方文档创建索引的教程,一样的方法却报错了

在我查询该方法的源码才得知,默认为PUT方法。由于我的User类是没有id这个属性的,而ES默认会从实体类中查询到id,作为ES的id。后来改成这种方法就可以了。

附带一下解析源码:

 

ASP.NET Core 集成 Elasticsearch 实现 PDF 全文检索功能主要是通过以下几个步骤: 1. 安装依赖:首先需要安装Elasticsearch客户端库,如`Nest`(官方推荐),这是一个针对Elasticsearch.NET客户端。你可以通过NuGet包管理器添加依赖。 ```bash Install-Package Nest ``` 2. 创建索引模板:Elasticsearch需要预先创建一个索引模板,用于处理PDF文档。在这个模板中,你需要指定如何解析和存储PDF内容。例如,可以利用Elasticsearch的Ingest Node Pipeline来进行PDF提取。 3. 数据预处理:将PDF文件转换为可以被Elasticsearch处理的结构化数据。这通常涉及到解析PDF并提取文本,然后将其作为文档的内容存入Elasticsearch。 4. 爬取和索引PDF:编写代码定期爬取目标文件夹内的PDF,将它们的内容发送到Elasticsearch进行索引。 5. 搜索API:在 ASP.NET Core 中,你可以使用 `Nest` 库提供的搜索 API 来执行查询。例如,创建一个控制器方法接收用户输入的搜索词,构造一个 `Nest.SearchDescriptor<T>` 对象,并执行搜索请求。 ```csharp using Elasticsearch.Net; using Nest; public async Task<ActionResult<IEnumerable<PdfDocument>>> Search(string query) { var client = new ElasticClient(); var searchResponse = await client搜索单个索引名>.SearchAsync<YourPdfDocumentType>(s => s .Query(q => q .Match菲特字符串查询) .From(0) // 分页起始位置 .Size(10)); // 返回结果数量 return searchResponse.Documents; } ``` 其中,`YourPdfDocumentType` 是你为PDF文档定义的Elasticsearch映射类型。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值