예제 #1
0
        /// <summary>
        /// 修改
        /// </summary>
        /// <typeparam name="T"></typeparam>
        /// <param name="model"></param>
        /// <param name="indexName"></param>
        /// <param name="typeName"></param>
        /// <param name="id"></param>
        /// <returns></returns>
        public bool Update(ESUpdateOption option)
        {
            var queryCondations = BuildQueryContainer(option.Where, option.Analyzer);
            var shouldQuerys    = queryCondations.Should;
            var mustQuerys      = queryCondations.Must;
            var mustNotQuerys   = queryCondations.MustNot;

            if (mustQuerys.Count <= 0 && shouldQuerys.Count <= 0 && mustNotQuerys.Count <= 0)
            {
                return(false);
            }
            UpdateByQueryRequest <T> request = new UpdateByQueryRequest <T>(option.IndexName, option.TypeName);

            request.Script.Params = option.Model;

            var query = new BoolQuery();

            if (mustQuerys.Count > 0)
            {
                query.Must = mustQuerys;
            }
            if (shouldQuerys.Count > 0)
            {
                query.Should = shouldQuerys;
            }
            if (mustNotQuerys.Count > 0)
            {
                query.MustNot = mustNotQuerys;
            }
            request.Query = query;

            var res = _es.UpdateByQuery(request);

            return(res.Updated > 0);
        }
예제 #2
0
        protected void ResetAppId(string _default_index, string app_id)
        {
            var req = new UpdateByQueryRequest(_default_index);
            //req.Query = new QueryContainer(new MatchAllQuery());
            //req.Script = new InlineScript($"ctx._source.app_id='{app_id}'");

            var re = client.UpdateByQuery(req);
        }
        protected void UpdateByQuery(string indexName, QueryContainer query, IScript script)
        {
            var elasticSearchTypeAttribute = Attribute.GetCustomAttribute(typeof(TDocument), typeof(ElasticsearchTypeAttribute));
            var elasticSearchTypeName      = ((Nest.ElasticsearchTypeAttribute)elasticSearchTypeAttribute).Name;

            var request = new UpdateByQueryRequest(indexName, elasticSearchTypeName)
            {
                Query  = query,
                Script = script
            };

            var status = _esClient.UpdateByQuery(request);

            ElasticsearchExceptionBuilder(status, ElasticsearchOperation.Update);
        }
예제 #4
0
파일: BaseEsContext.cs 프로젝트: Ljyi/eaven
        /// <summary>
        /// 更新全部字段
        /// </summary>
        /// <returns></returns>
        public bool UpdateByQuery(UpdateByQueryRequest t)
        {
            var updateByQueryResponse = client.UpdateByQuery(t);

            return(updateByQueryResponse.IsValid);
        }
예제 #5
0
        /// <summary>
        /// 更新(需要自己构建request对象)
        /// </summary>
        /// <param name="request"></param>
        /// <returns></returns>
        public bool Update(UpdateByQueryRequest <T> request)
        {
            var res = _es.UpdateByQuery(request);

            return(res.Updated > 0);
        }