我一直在使用的Neo4j ElasticSearch集成模块(https://github.com/neo4j-contrib/neo4j-elasticsearch鉴于elasticsearch服务在服务器本身上运行的地方,发展和分期服务器上).
但是当使用Amazon AWS ElasticSearch服务并在Neo4j数据库中添加数据时 - 有时数据不会插入到弹性搜索中.
在Neo4j和Elasticsearch之间发生事务时,不会抛出任何错误或异常.
因此调试变得困难,为什么会发生这种情况.
任何想法都表示赞赏.
编辑:
至于网络设置,服务器是安装了Neo4j的EC2实例,并且所讨论的ElasticSearch服务是"AWS ElasticSearch Service".因为它确实有效,我在这里不了解网络的任何问题.
Neo4j版本:2.3.6 ElasticSearch版本:2.3.2
再次指出,这只发生在"AWS ElasticSearch Service"连接时,而不是在EC2实例本身上运行的那个.
知道是否有任何方法可以记录Neo4j和ElasticSearch服务之间发生的事务,这将是非常有帮助的.
以下是日志文件的内容:/var/log/neo4j/console.log
2016-09-02 12:27:47.494+0000 INFO Remote interface ready and available at http://0.0.0.0:7474/
12:28:42.520 [NodeChecker RUNNING] ERROR i.s.c.config.discovery.NodeChecker - Error executing NodesInfo!
io.searchbox.client.config.exception.NoServerConfiguredException: No Server is assigned to client to connect
at io.searchbox.client.AbstractJestClient$ServerPool.getNextServer(AbstractJestClient.java:132) ~[jest-common-2.0.2.jar:na]
at io.searchbox.client.AbstractJestClient.getNextServer(AbstractJestClient.java:81) ~[jest-common-2.0.2.jar:na]
at io.searchbox.client.http.JestHttpClient.prepareRequest(JestHttpClient.java:80) ~[jest-2.0.2.jar:na]
at io.searchbox.client.http.JestHttpClient.execute(JestHttpClient.java:46) ~[jest-2.0.2.jar:na]
at io.searchbox.client.config.discovery.NodeChecker.runOneIteration(NodeChecker.java:65) ~[jest-common-2.0.2.jar:na]
at com.google.common.util.concurrent.AbstractScheduledService$ServiceDelegate$Task.run(AbstractScheduledService.java:189) [guava-19.0.jar:na]
at com.google.common.util.concurrent.Callables$3.run(Callables.java:100) [guava-19.0.jar:na]
at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511) [na:1.8.0_101]
at java.util.concurrent.FutureTask.runAndReset(FutureTask.java:308) [na:1.8.0_101]
at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.access$301(ScheduledThreadPoolExecutor.java:180) …Run Code Online (Sandbox Code Playgroud) 我已经设置了一个测试Amazon Elasticsearch Service,它使用Elastic和Kibana 5.1.
我可以通过curl插入测试条目:
curl -XPOST "https://mytestservicedomain.amazonaws.com/testindex/testtype" -d "{\"foo\":\"bar\"}"
Run Code Online (Sandbox Code Playgroud)
并验证它是通过Kibana的Dev Tools插入的:
请求:
GET _search
{
"query": {
"match_all": {}
}
}
Run Code Online (Sandbox Code Playgroud)
响应:
{
"_index": "testindex",
"_type": "testtype",
"_id": "AVoQD4Kyv413fK4nN1sg",
"_score": 1,
"_source": {
"foo": "bar"
}
}
Run Code Online (Sandbox Code Playgroud)
但是当我去Kibana的菜单选项中发现时,我无法获得任何结果.我得到的只是一些错误:
Saved "field" parameter is now invalid. Please select a new field.Discover: "field" is a required parameter我在Elastic的论坛上发现了一些帖子(帖子1,帖子2),这些帖子似乎表明Kibana/Elastic存在一些兼容性问题,但我只是想看看是否还有其他人遇到过它.
我正在试用AWS Elasticsearch服务:
https://aws.amazon.com/elasticsearch-service/
很容易设置.基本上就是命中部署.遗憾的是,由于未在AWS构建中启用CORS,因此无法获取任何Elasticsearch GUI(ElasticHQ,Elasticsearch Head),并且无法更改elasticsearch配置或安装我能看到的插件.
有谁知道如何在AWS上更改这些选项?
amazon-web-services elasticsearch elasticsearch-plugin amazon-elasticsearch
我在尝试在增加集群大小并查看index_create_block_exception之后在AWS ElasticSearch集群中创建新索引.我怎么能纠正这个?我试过搜索但没有得到确切的答案.谢谢.
curl -XPUT 'http://<aws_es_endpoint>/optimus/'
{"error":{"root_cause":[{"type":"index_create_block_exception","reason":"blocked by: [FORBIDDEN/10/cluster create-index blocked (api)];"}],"type":"index_create_block_exception","reason":"blocked by: [FORBIDDEN/10/cluster create-index blocked (api)];"},"status":403}
Run Code Online (Sandbox Code Playgroud) 我想知道是否可以为在这个链接中提到的AWS实例上运行的Kibana添加自定义插件.
从命令行我们可以输入,
bin/kibana-plugin install some-plugin
但是,在AWS ElasticSearch Service的情况下,没有命令提示符/终端,因为它只是一个服务,我们没有SSH到它.我们只有管理控制台.那么如何在这种情况下为kibana添加自定义插件呢?
我正在编写一个lambda函数,我必须将日志写入Amazon的ElasticSearch Service.后端是Node.js.我在github上遇到了这个例子:
https://github.com/awslabs/amazon-elasticsearch-lambda-samples/blob/master/src/s3_lambda_es.js
哪个用于AWS.NodeHttpClient第91行.官方文档对此没有任何说明:
http://docs.aws.amazon.com/AWSJavaScriptSDK/latest/AWS.html
也没有任何提供AWS.HttpClient(看起来像姐妹类AWS.NodeHttpClient)
那么,有没有人以前成功使用/修改过这段代码?我真的不想深入node_modules了解类的描述文件夹
在阅读了大量文档后,我了解到primary_term 和sequence_number 用于乐观并发控制,以防止旧版本的文档覆盖较新的文档。但是,我的问题是 primary_term 到底是什么?它与主分片相同吗?
不知道为什么 AWS ES 不允许停止和启动集群。我相信在幕后它只是一组本身可以轻松停止和启动的 AWS EC2 实例。这样,客户可能不需要备份删除集群、从备份启动新的恢复,更不用说使用新的 URL 了!我了解服务提供商 (AWS) 需要在客户不在“工作”时为客户维护/预留实例。
所以,
谢谢,拉胡尔
设置AWS Elasticsearch之后,我在静态IP服务器上安装了Logstash和Kibana代理,并在ES上添加了这个域访问策略,它运行正常:
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "",
"Effect": "Allow",
"Principal": {
"AWS": "*"
},
"Action": "es:*",
"Resource": "arn:aws:es:ap-southeast-1:323137313233:domain/sg-es-logs/*",
"Condition": {
"IpAddress": {
"aws:SourceIp": [
"192.192.192.192"
]
}
}
}
]
}
Run Code Online (Sandbox Code Playgroud)
现在我需要允许Lambda函数es:ESHttpDelete在AWS ES上执行操作,因此我使用现有角色创建了该函数,service-role/Elasticsearch然后ARN从IAM Managment控制台复制了相关内容以将其添加到AWS ES访问策略,以得出:
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Principal": {
"AWS": [
"arn:aws:iam:: 323137313233:role/service-role/Elasticsearch"
]
},
"Action": [
"es:*"
],
"Resource": "arn:aws:es:ap-southeast-1:323137313233:domain/sg-es-logs/*"
}
]
}
Run Code Online (Sandbox Code Playgroud)
问题出在ES我应该为静态IP或ARN选择域访问策略,但不能同时选择两者.当我尝试手动合并它们而不是使用控制台时,它不起作用.我检查了AWS文档,但他们没有提到是否可能.
amazon-web-services elasticsearch aws-lambda amazon-elasticsearch aws-access-policy
就性能而言,在为Elasticsearch指定同义词过滤器时,使用synonyms_path和使用同义词之间有什么区别吗?请参考图片.请注意,在我的ES群集中,有许多索引将使用同一个同义词过滤器.
我问这个问题,因为显然AWS ES不允许将文件直接上传到集群.因此,我需要使用API上传同义词数据.