首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    search(4)- elastic4s-ElasticDsl

    上次分析了一下elastic4s的运算框架。本来计划接着开始实质的函数调用示范,不过看过了Elastic4s的所有使用说明文档后感觉还是走的快了一点。主要原因是elasticsearch在7.0后有了很多重点调整改变,elastic4s虽然一直在源代码方面紧跟ES的变化,但使用文件却一直未能更新,所以从说明文档中学习elastic4s的使用方法是不可能的,必须从源码中摸索。花了些时间过了一次elastic4s的源码,感觉这个工具库以后还是挺有用的:一是通过编程方式产生json请求比较灵活,而且可以通过compiler来保证json语句的正确性。二是对搜索结果的处理方面:由于返回的搜索结果是一堆又长又乱的复杂json,不敢想象自己要如何正确的解析这些json, 然后才能调用到正确的结果,但elastic4s提供了一套很完善的response类,使用起来可能会很方便。实际上elastic4s的编程模式和scala语言运用还是值得学习的。既然这样,我想可能用elastic4s做一套完整的示范,包括:索引创建、索引维护、搜索、聚合统计等,对了解和掌握elastic4s可能大有帮助。在这之前,我们还是再回顾一下elastic4s的运算原理:elastic4s的功能其实很简单:通过dsl语句组合产生json请求,然后发送给ES-rest终端, 对返回的json结果进行处理,筛选出目标答案。

    01

    能向入口函数传入多个参数的 QueueUserWorkItem

    不啰嗦了,花一堆时间也没赶上 std::async 和 std::thread 的设计,标准库的设计真的,很优秀。 我记下这段时间里做了什么; 这里包含了把函数拆成两步调用的方法,第一步传参,第二步执行;SplitInvoke;如果我能把第一步放到A线程,第二步放到B线程,就能解决std::thread 潜在的两次拷贝和对象(Windows的窗口对象等)绑定到线程问题,就能制造一个优于 std::async和std::thread的东西。 一个向仅有一个VOID*型回调函数传入任意多个任意类型参数的方法;InvocationShim; 一个推导函数调用约定以及函数摘要的方法;FnSynopsis、CallableSynopsis; 一个仿制的 TLS;PushEx0ArgThunk; 以上这些足以为所有函数编写一个通用的 detour函数,或用来帮助处理inline hook。以下是代码:

    02
    领券