博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Elasticsearch2.x 使用Groovy脚本
阅读量:5918 次
发布时间:2019-06-19

本文共 4554 字,大约阅读时间需要 15 分钟。

 1 update api:

people/person/2/_update

{  "doc": {    "Lastname": "海峡2"    }}

2 script:

  这时候当API不能满足要求时,Elasticsearch允许你使用脚本实现自己的逻辑。脚本支持非常多的API,例如搜索、排序、聚合和文档更新。脚本可以通过请求的一部分、检索特殊的.scripts索引或者从磁盘加载方式执行。

需要开启脚本支持,es配置文件中要加入:

script.inline: onscript.indexed: on script.file: on

根据ID修改:people/person/2/_update

  1)脚本能够使用update API改变_source字段的内容,它在脚本内部以ctx._source表示    

    {    "script": "ctx._source.Lastname='川普'"    }

  2)当我们试图更新一个不存在的文档,更新将失败,在这种情况下,我们可以使用upsert参数定义文档来使其不存在时被创建

  {     "script" : "ctx._source.Lastname='川普'",     "upsert": {       "views": 1     }  }
删除:{  "script": " ctx.op= ctx._source.Lastname='川普' ?'delete':'none'"}

根据条件修改:people/person/_update_by_query

讲firstname中包含川字的文档的:lastname改为希拉里,Firstname修改为四川普通话
{  "query": {    "term": {      "Firstname": "川"    }  },  "script": {    "inline": "ctx._source.Lastname='希拉里';ctx._source.Firstname='四川普通话'"  }}

 nest:

//UpdateByQueryDescriptor Func
, IUpdateByQueryRequest> fun = u => u.Query(q => q.Term("Firstname", "川")).Script(s => s.Inline("ctx._source.Lastname='希拉里1';ctx._source.Firstname='四川普通话1'"));client.UpdateByQuery
("people", "person", fun);

 

 继续参考:

继续参考:///         /// 根据查询条件进行更新        ///         /// 
/// /// /// ///
public static IUpdateByQueryResponse UpdateByQuery
(string indexName, string typeName, string script, Func
, QueryContainer> querySelector) where T : class { IUpdateByQueryResponse updateResponses = null; if (!string.IsNullOrEmpty(script)) { try { updateResponses = ESHelper.GetInstance() .GetElasticClient() .UpdateByQuery
(indexName, typeName, u => u.Query(querySelector) .Script(s => s.Inline(script) .Lang("groovy")) .Refresh() .Conflicts(Elasticsearch.Net.Conflicts.Proceed) .WaitForCompletion(false)); } catch (Exception ex) { LogInfoWriter.GetInstance("error").Error("方法:UpdateByQuery 批处理异常:" + ex.ToString()); } } return updateResponses; } ///
/// 根据查询条件进行删除 /// ///
///
///
///
[CoreCat] public static IDeleteByQueryResponse DeleteByQuery(string indexName, string typeName, QueryContainer qc) { IDeleteByQueryResponse response = null; try { IDeleteByQueryRequest deleteQuery = new DeleteByQueryRequest(indexName, typeName) { Query = qc }; response = ESHelper.GetInstance().GetElasticClient().DeleteByQuery(deleteQuery); } catch (Exception ex) { LogInfoWriter.GetInstance("error").Error("方法:DeleteByQuery 批处理异常:" + ex.ToString()); } return response; }
View Code

3 DeleteByQuery命令

需要安装插件 DeleteByQuery 并重启es:sudo bin/plugin install delete-by-query根据条件删除文档:DELETE: productindex/product/_querybody:{  "query": {    "match": {      "sysNo": "3269 3271"    }  }}删除某个类型下的所有文档DELETE: productindex/product/_querybody:{  "query": {    "match_all": {    }  }}NETS命令:IDeleteByQueryRequest deleteQuery = new DeleteByQueryRequest(indexName, typeName) { Query = qc };IDeleteByQueryResponse response = ESHelper.GetInstance().GetElasticClient().DeleteByQuery(deleteQuery);

 

bool query

语法:

{  "size": 20,  "query": {    "bool": {      "must": [        {          "term": {            "customerSysNo": 7308257          }        },        {          "term": {            "isShow": true          }        }      ],      "must_not": {        "term": {          "sOID": 1003219103        }      }    }  }}
View Code

nest语法:

List
mustnotqcs = new List
();List
mustqcs = new List
();//mustnotqcsmustnotqcs.Add(new TermQuery { Field = "sOID", Value =1003219103 });//mustqcsmustqcs.Add(new TermQuery { Field = "customerSysNo", Value = 7308257 }); mustqcs.Add(new TermQuery { Field = "isShow", Value = "true" });BoolQuery qcbool = new BoolQuery() { Must = mustqcs, MustNot = mustnotqcs };
View Code

 

转载于:https://www.cnblogs.com/shaner/p/6053988.html

你可能感兴趣的文章
ToLookup
查看>>
js 创建对象
查看>>
Mysql运维管理-生产场景Mysql主从复制读写分离授权方案及实战15
查看>>
Hibernate写配置文件无提示信息解决
查看>>
[HNOI2008]水平可见直线
查看>>
Struts2中数据封装机制
查看>>
Windows平台下,Scrapy Installation,安装问题解决
查看>>
Linus vs. Tanenbaum关于宏内核与微内核之间的著名争论
查看>>
WCF数据契约代理和已知类型的使用
查看>>
c#常用的Datable转换为json,以及json转换为DataTable操作方法
查看>>
EJB 的理解
查看>>
css样式初始化
查看>>
51Nod-1002 数塔取数问题【DP】
查看>>
UVA129 HDU1627 Krypton Factor
查看>>
孙子算经 卷下
查看>>
我的第一个WinForm程序
查看>>
完美分页存储过程(有缺陷,无法加入条件)
查看>>
oracle主键自增
查看>>
PHP入门part2
查看>>
hexo如何添加自定义站内搜索
查看>>