.net core Elasticsearch 更新文档,updatebyquery

日常使用es过程中,我们经常会涉及到批量更新以及单个更新,本文通过浅显易懂的demo,用来展示如何通过ID进行单个文档的更新,以及使用script进行批量更新

using ElasticHelper.Models;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using Elasticsearch.Net;
using Nest;

namespace ElasticHelper.Helper
{

    public interface IEsService<T> where T : BaseModel
    {
        Task<UpdateResponse<T>> Update(string index, string id, T doc);

        Task<bool> UpdateByQuery(string index);
    }


    public class EsService<T>:IEsService<T> where T : BaseModel
    {
        private readonly ElasticClient _client;

        public EsService()
        {
            var pool = new SingleNodeConnectionPool(new Uri("http://192.168.214.132:9200"));
            var connectconfig = new ConnectionSettings(pool).BasicAuthentication("elastic","ellischen").EnableDebugMode();
            _client = new ElasticClient(connectconfig);
        }


        public  async Task<bool> UpdateByQuery(string index)
        {
            SearchRequest searchrequest = new SearchRequest<T>(index)
            {
                Query = new LongRangeQuery
                {
                    Field = "pageCount",
                    GreaterThanOrEqualTo = 199,
                    LessThanOrEqualTo = 200
                }
            };


            //var documents = _client.Search<T>(searchrequest).Documents.ToList();

            //return true;

            var response = await _client.UpdateByQueryAsync<T>(x => x.Index(index).Query(x => searchrequest.Query).Script("ctx._source.pageCount = ctx._source.pageCount+990")
            .Conflicts(Conflicts.Proceed)
            .Refresh(true));
            Console.WriteLine(response.DebugInformation);
            return true;
        }


        public Task<UpdateResponse<T>> Update(string index,string id,T books)
        {
            return _client.UpdateAsync(DocumentPath<T>.Id(id),x=>x.Index(index).DocAsUpsert(true).Doc(books));
        }
    }
}

https://discuss.elastic.co/t/nest-api-updatebyquery/128759/2

https://hassantariqblog.wordpress.com/2016/09/22/elastic-search-update-document-using-nest-in-net/

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值