elasticsearch - "nth not supported on this type"Elastisch 连接设置异常

标签 elasticsearch clojure elastisch

我正在尝试通过 [Elastisch 教程] 在 VM 上运行的 ElasticSearch 实例中创建一些测试数据。

我正在运行此代码:

(ns content-rendering.core
  (:require [clojurewerkz.elastisch.native       :as esr]
            [clojurewerkz.elastisch.native.index :as esi]))

(defn populate-test-data
  []
  (let [conn (esr/connect "http://10.10.10.101:9200")]
    (esi/create conn "test")))

(populate-test-data)

当我尝试使用 emacs 中的 Cider 或 Leiningen repl 执行命名空间中的代码时,我看到以下异常:
Caused by java.lang.UnsupportedOperationException
   nth not supported on this type: Character

                   RT.java:  933  clojure.lang.RT/nthFrom
                   RT.java:  883  clojure.lang.RT/nth
                native.clj:  266  clojurewerkz.elastisch.native/connect
                  core.clj:    7  content-rendering.core/populate-test-data
                  core.clj:   10  content-rendering.core/eval5078

如果我需要将 Elastisch 命名空间放入 repl 并运行类似以下内容,则它可以正常工作:
(def conn (esr/connect "http://10.10.10.101:9200"))
(esi/create conn "test")  ; {:acknowledged true}

有什么想法我在这里想念的吗?

最佳答案

Elastisch 中有两个客户端,一个是 REST 客户端,一个是本地客户端。您正在使用 native 传输,但在它需要 [host port] 的序列时将 RE​​ST URL 传递给它对。

您可以通过更改 esr 切换到 REST 客户端/esi他们的clojurewerkz.elastisch.rest吊坠,或将 native 指向正确的端点:

(esr/connect [["10.10.10.101" 9300]])

如果您的集群名称不是默认值,则必须使用附加选项映射进行设置:
(esr/connect [["10.10.10.101" 9300]] {"cluster.name" "my-es"})

关于elasticsearch - "nth not supported on this type"Elastisch 连接设置异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34650796/

相关文章:

elasticsearch - Elasticsearch升级doc_values是否启用?

mongodb - 如何使用 Haskell 将某些内容从一个数据库移动到另一个数据库?

clojure - 如何在Enlive中生成一对元素的列表?

clojure - 如何内存一个使用 core.async 和非阻塞 channel 读取的函数?

clojure - Clojure Elasticsearch API Elastisch不返回结果或文档

regex - 匹配grok中的版本号零件

reactjs - 从客户端访问Elasticsearch而不通过API服务器是否安全?

clojure - 如果那么在 Clojure 中做

elasticsearch - 如何使用Elastisch连接到多个ElasticSearch主机?