1

こんにちはstackoverflowers!

ライブラリelastic4sをscalaで使用しようとしていますが、次のコードを実行すると(インデックス広告内の広告のリストを取得するため):

trait elastic4s {
  def get: Future[SearchResponse] = {
    val client = ElasticClient.local
    client execute { search in "ads"->"ad" }
  }
}

私はこの例外を得ました:

An error has occured: org.elasticsearch.indices.IndexMissingException: [ads] missing

ここに完全な出力を含むペーストビン。

これが私の構成です:

-- Java
java version "1.7.0_51"
Java(TM) SE Runtime Environment (build 1.7.0_51-b13)
Java HotSpot(TM) 64-Bit Server VM (build 24.51-b03, mixed mode)

-- ElasticSearch
version 1.0.1

-- Elastic4s
version 2.10-1.0.1 

Elastic Search は localhost:9200 で稼働しており、このインデックス広告が存在します。この CURL リクエスト:

curl -XGET 'http://localhost:9200/ads/ad/_search'

戻り値

{
    "took": 6,
    "timed_out": false,
    "_shards": {
    "total": 5,
    "successful": 5,
    "failed": 0
    },
    "hits": {
    "total": 1,
    "max_score": 1,
    "hits": [
        {
            "_index": "ads",
            "_type": "ad",
            "_id": "UrKm89AXTzOxB9kFdpue4Q",
            "_score": 1,
            "_source": {
                "json": "json"
            }
        }
    ]
    }
}

私は理解できません...誰かが私にトラックを与えることができれば:)

4

1 に答える 1

1

ローカル ノードは、そのプロセスの外部で実行されている他の Elasticsearch インスタンスと通信しません。ローカル ノードは、JVM に対してローカルです。

コードのコメントには次のように書かれています。

「ノードはローカル ノードですか。ローカル ノードは、ローカル (JVM レベル) ディスカバリ トランスポートを使用するノードです。同じ JVM (実際には、クラス ローダー) 内で開始された他の (ローカル) ノードが検出され、通信されます。ノードJVM の外部は検出されません。」

外部インスタンスがローカルで実行されている場合でも、リモート クライアントを使用して外部インスタンスに接続する必要があります。直感に反するように思えますが、リモートとは実際には IPC またはソケットベースを意味します。

于 2014-04-01T18:56:06.900 に答える