Janusgraph在与AWS OpenSearch版本7及更高版本交互时遇到`PermanentBackendException`

tnkciper  于 2022-09-20  发布在  ElasticSearch
关注(0)|答案(1)|浏览(265)

我们正在尝试使用AWS OpenSearch(ElasticSearch)7.10版作为索引后端来运行Janusgraph版本0.6.2。6.x版运行得很好,但当我们尝试连接到7.x版时,我们遇到了以下异常。

org.janusgraph.diskstorage.PermanentBackendException:方法[PUT],主机[https://vpc-xxxxxx.us-east-2.es.amazonaws.com:443],URI[/_CLUSTER/SETTINGS],状态行[HTTP/1.1401 AUTHORIZED]{“Message”:“您的请求:‘/_CLUSTER/SETTINGS’负载不被允许。”}

Janusgraph版本信息:

86   [main] INFO  org.janusgraph.graphdb.server.JanusGraphServer  - JanusGraph Version: 0.6.2
86   [main] INFO  org.janusgraph.graphdb.server.JanusGraphServer  - TinkerPop Version: 3.5.3

更详细的堆栈跟踪信息如下:

3115 [main] INFO  org.janusgraph.diskstorage.Backend  - Configuring index [search]
3387 [main] INFO  com.newforma.janusgraph.es.awsauth.AWSV4AuthHttpClientConfigCallback  - Initialized AWSV4AuthHttpClientConfigCallback for region us-east-2
3782 [main] WARN  org.apache.tinkerpop.gremlin.server.util.DefaultGraphManager  - Graph [graph] configured at [/etc/opt/janusgraph/janusgraph.properties] could not be instantiated and will not be available in Gremlin Server.  GraphFactory message: GraphFactory could not instantiate this Graph implementation [class org.janusgraph.core.JanusGraphFactory]
java.lang.RuntimeException: GraphFactory could not instantiate this Graph implementation [class org.janusgraph.core.JanusGraphFactory]
    at org.apache.tinkerpop.gremlin.structure.util.GraphFactory.open(GraphFactory.java:84)
    at org.apache.tinkerpop.gremlin.structure.util.GraphFactory.open(GraphFactory.java:80)
    ... 14 more
Caused by: java.lang.IllegalArgumentException: Could not instantiate implementation: org.janusgraph.diskstorage.es.ElasticSearchIndex
    at org.janusgraph.util.system.ConfigurationUtil.instantiate(ConfigurationUtil.java:79)
    at org.janusgraph.diskstorage.Backend.getImplementationClass(Backend.java:527)
    at org.janusgraph.diskstorage.Backend.getIndexes(Backend.java:511)
    at org.janusgraph.diskstorage.Backend.<init>(Backend.java:239)
    at org.janusgraph.core.JanusGraphFactory.open(JanusGraphFactory.java:127)
    ... 19 more
Caused by: org.janusgraph.diskstorage.PermanentBackendException: method [PUT], host [https://vpc-xxxxxx.us-east-2.es.amazonaws.com:443], URI [/_cluster/settings], status line [HTTP/1.1 401 Unauthorized]
{"Message":"Your request: '/_cluster/settings' payload is not allowed."}
    at org.janusgraph.diskstorage.es.ElasticSearchIndex.setupMaxOpenScrollContextsIfNeeded(ElasticSearchIndex.java:445)
    at org.janusgraph.diskstorage.es.ElasticSearchIndex.<init>(ElasticSearchIndex.java:388)
    ... 32 more
Caused by: org.elasticsearch.client.ResponseException: method [PUT], host [https://vpc-xxxxxx.us-east-2.es.amazonaws.com:443], URI [/_cluster/settings], status line [HTTP/1.1 401 Unauthorized]
{"Message":"Your request: '/_cluster/settings' payload is not allowed."}
    at org.elasticsearch.client.RestClient.convertResponse(RestClient.java:326)
    at org.elasticsearch.client.RestClient.performRequest(RestClient.java:296)
    at org.elasticsearch.client.RestClient.performRequest(RestClient.java:270)
    at org.janusgraph.diskstorage.es.rest.RestElasticSearchClient.performRequest(RestElasticSearchClient.java:482)
    at org.janusgraph.diskstorage.es.rest.RestElasticSearchClient.performRequest(RestElasticSearchClient.java:473)
    at org.janusgraph.diskstorage.es.rest.RestElasticSearchClient.updateClusterSettings(RestElasticSearchClient.java:269)
    at org.janusgraph.diskstorage.es.ElasticSearchIndex.setupMaxOpenScrollContextsIfNeeded(ElasticSearchIndex.java:443)
8aqjt8rx

8aqjt8rx1#

从堆栈跟踪可以看出,janusgraph试图为ElasticSearch属性max_open_scroll_context设置一个较高的值。默认情况下为500。

AWS OpenSearch(ElasticSearch)7.x及更高版本不允许我们设置集群属性。我在kibana上试了一下,也得到了类似的回复。AWS托管ElasticSearch 6.x版本支持此操作。

PUT _cluster/settings
{
    "persistent" : {
        "search.max_open_scroll_context": 1024
    },
    "transient": {
        "search.max_open_scroll_context": 1024
    }
}

401 - Unauthorized
{"Message":"Your request: '/_cluster/settings' payload is not allowed."}

我们可以在janugraph启动时通过将属性index.[x].elasticsearch.setup-max-open-scroll-contexts设置为false来禁用设置max_open_scroll_context属性。

您可以在ElasticSearch https://docs.janusgraph.org/configs/configuration-reference/#indexxelasticsearch上的配置参考部分阅读有关此内容的更多信息

相关问题