0

[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}

私がここで見逃しているアイデアはありますか?

4

1 に答える 1

1

elatisch には、REST クライアントとネイティブ クライアントの 2 つのクライアントがあります。[host port]ネイティブ トランスポートを使用していますが、一連のペアが必要なときに REST URL を渡しています。

esr/esiをペンダントに変更することで REST クライアントに切り替えるclojurewerkz.elastisch.restか、ネイティブのものを正しいエンドポイントに向けることができます。

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

クラスター名がデフォルトでない場合は、追加のオプション マップを使用して設定する必要があります。

(esr/connect [["10.10.10.101" 9300]] {"cluster.name" "my-es"})
于 2016-01-07T09:48:36.377 に答える