Tag: elasticsearch

使用cassandra和elasticsearch后端制作我的titan db图

我的问题是,我想将产品,客户和销售商数据存储在以cassandra作为存储后端和elasticsearch作为索引后端的titangraphics数据库中。 然后我会查询这些数据,向顾客和卖家提供build议。 我无法达到我可以存储自己的数据的地步。因为数据将是巨大的,我将使用cassandra和elasticsearch。 我到目前为止所做的是,我有cassandra,elasticsearch成立。 现在我可以运行bin / titan.sh启动启动cassandra,es和gremlin服务器我也可以用神数据图来玩 gremlin> graph = TitanFactory.open('conf/titan-cassandra-es.properties') ==>standardtitangraph[cassandrathrift:[127.0.0.1]] gremlin> GraphOfTheGodsFactory.load(graph) ==>null 现在我试图find一种方法来存储我的产品,客户和销售商graphics数据。 这样它的存储在cassandra和索引上就是elasticsearch。 我应该采取什么措施来做到这一点。 我的项目的主要语言是nodejs和Java是由于项目的限制。 我的问题简而言之 如何存储我自己的数据为titanium的数据库进行处理 一旦数据可用于处理。 我会暴露一些http apis来提出build议。 在Java中写作由于一些限制而不成问题。 我应该如何继续(我想我只有gremlin作为替代) 如果你能指出我的错误,并朝正确的方向扔掉一些面包屑,我将不胜感激

重复性工作订单系统的体系结构

我希望得到关于devise一个必须支持反复工作的工作订单系统的build议。 例如,pipe理员需要设置一个工单,以每6个月为单位重复一次。 我使用的NodeJS作为服务器,一个noSQL数据库(couchDB)的存储和elasticsearch作为search引擎。 这是我第一次尝试在文档结构上支持这个function: Base Workorder { _id: 1 … Unrelated fields "recurInValue" : 6, "recurInUnit" : "months" "lastRecurredOn": 1368914552527, "numOcurrences": 1, "numTimesToRepeat": null, "stopOn" : 1384920941195, "createdAt" 1364936177618 } Occurrence Workorder { _id: 2 … Unrelated fields "recurFrom" : 1 } Occurrence Workorder { _id: 3 … Unrelated fields "recurFrom" : 1 } 我目前的CRUD计划是: […]

如何在elasticsearch Nodejs客户端中进行显式映射

我在nodejs中为elasticsearch使用了Javascript客户端,但是对于我如何使用elasticsearch nodejs模块来设置文档的types似乎并不是很清楚。 我面临的问题是,我从我们的供应商的API拉一个JSON对象,并在该对象的属性之一是“排名”。 秩是一个浮点值,但无论出于何种原因,供应商将其作为string返回。 因此,当我在elasticsearch中input文档时,elasticsearch将该属性解释为一个string,我不能执行这样的查询: curl -XGET 'http://localhost:9200/backlinks/profile/_search?pretty=true' -d ' { "query" : { "match_all" : {} } , "facets": { "range1" : { "range" : { "field" : "rank", "ranges" : [ {"from" : "5.5", "to": "7.00"} ] } } }' 因为它返回以下exception: java.lang.ClassCastException: java.lang.String cannot be cast to java.lang.Number 我知道我可以做显式映射,当我创build索引,但有没有办法使用nodejs模块做到这一点? 我在文档中找不到这个选项,而且我发现当API已经存在时,明确地发送一个GET请求到弹性search服务器有点麻烦。 另外,是显式映射recursion? 说我的供应商发给我这个: { […]

为什么快照失败,错误:指数没有主碎片+ ]

当我尝试拍摄快照时失败,出现以下错误: { snapshot: { snapshot: '1430395938305_3032015', indices: ['myindex'], state: 'FAILED', reason: 'Indices don\'t haveprimaryshards+[ [ myindex ]] ', start_time: '2015-04-30T12: 12: 18.435Z', start_time_in_millis: 1430395938435, end_time: '2015-04-30T12: 12: 18.525Z', end_time_in_millis: 1430395938525, duration_in_millis: 90, failures: [], shards: { total: 0, failed: 0, successful: 0 } } } 任何人都可以知道它有什么问题吗? 这是我的集群健康 { "cluster_name" : "elasticsearch", "status" : "red", "timed_out" […]

端口9200拒绝连接?

我试图在Cloud9工作区的NodeJS中实现一个elasticsearch客户端,我只是想让它运行。 我的应用程序在端口5678上运行,而我的MongoDB在27017上运行。我试图寻找其他答案,但是我没有发现任何特别有用的东西。 这是尝试连接到本地主机时收到的错误消息:9200。 Elasticsearch ERROR: 2015-06-26T04:24:19Z Error: Request error, retrying — connect ECONNREFUSED at Log.error (/home/ubuntu/workspace/node_modules/elasticsearch/src/lib/log.js:213:60) at checkRespForFailure (/home/ubuntu/workspace/node_modules/elasticsearch/src/lib/transport.js:192:18) at HttpConnector.<anonymous> (/home/ubuntu/workspace/node_modules/elasticsearch/src/lib/connectors/http.js:153:7) at ClientRequest.wrapper (/home/ubuntu/workspace/node_modules/elasticsearch/node_modules/lodash/index.js:3128:19) at ClientRequest.emit (events.js:95:17) at Socket.socketErrorListener (http.js:1552:9) at Socket.emit (events.js:95:17) at net.js:441:14 at process._tickCallback (node.js:442:13) Elasticsearch TRACE: 2015-06-26T04:24:19Z -> HEAD http://localhost:9200/ <- 0 Elasticsearch WARNING: 2015-06-26T04:24:19Z Unable to revive connection: http://localhost:9200/ […]

问题在启动插件应用程序

我的configuration的Elasticsearch -2.0.0 Kibana -4.2.1节点版本 – v5.0.0 npm版本 – v3.4.1 开始我的elasticsearch和kibana并遵循Kibana插件Yeoman生成器中提供的步骤 – 入门使用yo kibana-plugin创build一个新的插件目录,并开始使用npm start root@root:~/my-new-plugin$ npm start 它显示以下错误 npm ERR! Linux 3.13.0-68-generic npm ERR! argv "/usr/local/bin/node" "/usr/bin/npm" "start" npm ERR! node v5.0.0 npm ERR! npm v3.4.1 npm ERR! missing script: start npm ERR! npm ERR! If you need help, you may report this error at: […]

弹性search创build基于时间的索引

根据基于时间的数据 ,使用这种方法主要有两种情况。 首先是日志logging,es与Logstash集成,默认情况下每天创build一个新的索引。 但是,我处于创build社交networking活动指标的第二个条件,每三个月自动创build一个指标,即指数名称为data-01 , data-04 , data-07 。 我search弹性弹性search参考2.1和弹性search:权威指南很多。 我没有什么帮助。 希望任何能够给我提供线索或提示的人。

AWS Lambdafunction(节点) – 自定义超时logging

我想知道是否有任何方法劫持标准的“任务1.00秒后超时”日志。 上下文的位置:我将lambda函数日志stream入AWS Elasticsearch / Kibana,我logging的事情之一是函数是否成功执行(很好知道)。 我已经build立了一个testingstream到ES,我已经能够定义一个模式来映射我logging到ES中的字段。 从function,我控制台日志如下: “\”FAIL \“\”东西搞砸\“\”0.100秒\“” 并与映射,我得到一个日志结构,如: 状态 – 消息 ——————– 执行时间 失败—-搞砸了— 0.100秒 …这是可爱的。 但是,如果日志进来像: “1.00秒后超时” 那么映射显然不适用。 如果ES被拾取,它可能会把整个string转储到“状态”,这是不理想的。 我想也许我可以查询context.getRemainingMillis(),如果它可能在最大执行时间(你不能从上下文对象?)的10毫秒内,然后触发自定义日志,并忽略默认输出。 然而,这感觉像一个黑客。 有没有人有从AWS Lambdalogin到ES的经验? 使用状态等创build这些自定义日志的关键是,我们可以监视lambda函数(很多)的活动,而默认的日志格式不允许我们分类函数的结果。 **** 编辑 **** 我使用的解决scheme是修改AWS生成的用于将日志行发送到Elasticsearch的lambda函数。 如果我可以与AWS的lambdalogging器进行交互来设置日志格式,那将是非常好的,但是现在这样做了! 我将分享一些关于这方面的关键点: parsing行和设置自定义字段所做的工作是在调​​用buildSource() 之前在transform()中完成的。 消息本身(完整的日志行)可以在logEvent.message中find。 您不只是以所需的格式重新分配消息(事实上,将原始行发送到ES可能是最好的)。 这里的关键是在logEvent.extractedFields中设置自定义字段。 所以一旦我撕开了日志行,我设置了logEvent.extractedFields.status =“FAIL”,logEvent.extractedFields.message =“Whoops”等。

没有活连接在nodejs中的Elasticsearch连接时出错

我在连接elasticsearch连接时遇到这个问题。 var elasticsearch = require('elasticsearch'); var client = new elasticsearch.Client({ host: 'localhost:9200', log: 'trace'}); Elasticsearch错误:2016-07-19T19:09:26Z 错误:请求错误,重试 – 连接ECONNREFUSED 127.0.0.1:9200 在Log.error(/root/git_build/FirstMoveChess/node_modules/elasticsearch/src/lib/log.js:225:56) 在checkRespForFailure(/root/git_build/FirstMoveChess/node_modules/elasticsearch/src/lib/transport.js:195:18) 在HttpConnector。 (/root/git_build/FirstMoveChess/node_modules/elasticsearch/src/lib/connectors/http.js:154:7) 在ClientRequest.bound(/root/git_build/FirstMoveChess/node_modules/lodash-node/modern/internals/baseBind.js:56:17) 在emitOne(events.js:96:13) 在ClientRequest.emit(events.js:188:7) 在Socket.socketErrorListener(_http_client.js:308:9) 在emitOne(events.js:96:13) 在Socket.emit(events.js:188:7) 在emitErrorNT(net.js:1272:8) 在_combinedTickCallback(internal / process / next_tick.js:74:11) at process._tickCallback(internal / process / next_tick.js:98:9) Elasticsearch TRACE:2016-07-19T19:09:27Z – > HEAD http:// localhost:9200 /

PostgreSQL与elasticsearch(保持同步) – nodeJS

我想设置postgres和elasticsearch。 但在将数据投入到elasticsearch之前,我想要防止networking或服务器宕机时的数据丢失。 阅读了这个主题后: https : //gocardless.com/blog/syncing-postgres-to-elasticsearch-lessons-learned/ 。 我想出了3个解决scheme。 创build一个数据库表ei: store ,并添加任何新的/更新的数据给它。 查询期间:将数据插入store 。 select新数据: SELECT data FROM store WHERE modified > (:last modified time from elasticsearch) 将“新”数据发送到elasticsearch 使用redis pub/sub /订阅请求,并使elasticsearch侦听/订阅即将到来的数据。 如果elasticsearch中断,数据将在队列中 在交易过程中捕捉任何错误到elasticsearch并将数据保存到一个安全的地方(ei:上面提到的store表)。 然后有一个cron工作推回这个数据。 当然最简单的事情就是直接向elasticsearch插入数据。 但是这样做可以防止数据在腐败期间存储在安全的地方。 1在我看来太慢了,不像2 。 而且3需要维护error handling代码。 现在2是我的select。 有没有更好的方法来做到这一点? 我想听听你的意见和新的build议 :d