0

PlainElastic.Net クライアントと CURL を使用して、mongodb コレクションのインデックスを作成しようとしています。しかし、私は両方の試みで惨めに失敗しています。

私の.netオブジェクトは次のとおりです

<BsonIgnoreExtraElements>
Public Class QueryReadyProduct

<BsonIgnore()>
<JsonIgnore()>
Property _id As Object
Property CustomerId As Guid
Property ProductId As Guid
Property CategoryId As Guid
Property CustomHierarchyId As Guid

<BsonRepresentation(BsonType.String)>
Property Name As String

クラス終了

mongodb に移行すると、追加の_idプロパティ フィールドが表示されます

PlainElastic.net では、次の手順を実行しようとしています。

Dim data As String = "{
  \"type\": \"mongodb\",
  \"mongodb\": {
    \"db\": \"brandviewdata\",
    \"collection\": \"queryreadyproducts\"
  },
  \"index\": {
    \"name\": \"mongoindex\",
    \"type\": \"products\"
  }
}"

Dim jsonData As String = serializer.ToJson(data)

Dim indexR As String = connection.Put(New IndexCommand("_river", "mongodb", "_meta"), "{}")
Dim mappingResult As String = connection.Put(New PutMappingCommand("_river", "mongodb"), jsonMapping)
Dim indexResult As String = connection.Put(New IndexCommand("_river", "mongodb", "_meta"), jsonData)

JSON マッピングは次のとおりです。

{
    "queryreadyproduct": {
        "type": "object",
        "_all": {
            "enabled": false
        },
        "dynamic": false,
        "properties": {
            "Name": {
                "type": "string",
                "analyzer": "standard"
            },
            "CustomerId": {
                "type": "binary",
                "index": "not_analyzed"
            },
            "ProductId": {
                "type": "binary",
                "index": "not_analyzed"
            },
            "CategoryId": {
                "type": "binary",
                "index": "not_analyzed"
            },
            "CustomHierarchyId": {
                "type": "binary",
                "null_value": "",
                "index": "not_analyzed"
            }
        }
    }
}

ElasticSearch ログに次のエラーが表示され続けます

[2013-06-07 10:42:21,763][DEBUG][action.index             ] [Ranger] [_river][0], node[hKe8cliXSPmHcySUUmhJLg], [P], s[STARTED]: Failed to execute [index {[_river][mongodb][_meta], source["{ \"type\": \"mongodb\", \"mongodb\": { \"db\": \"brandviewdata\", \"collection\": \"queryreadyproducts\"}, \"index\": {\"name\": \"mongoindex\", \"type\": \"products\" }}\""]}]
org.elasticsearch.index.mapper.MapperParsingException: Malformed content, must start with an object
    at org.elasticsearch.index.mapper.DocumentMapper.parse(DocumentMapper.java:477)
    at org.elasticsearch.index.mapper.DocumentMapper.parse(DocumentMapper.java:450)
    at org.elasticsearch.index.shard.service.InternalIndexShard.prepareIndex(InternalIndexShard.java:327)
    at org.elasticsearch.action.index.TransportIndexAction.shardOperationOnPrimary(TransportIndexAction.java:203)
    at org.elasticsearch.action.support.replication.TransportShardReplicationOperationAction$AsyncShardOperationAction.performOnPrimary(TransportShardReplicationOperationAction.java:532)
    at org.elasticsearch.action.support.replication.TransportShardReplicationOperationAction$AsyncShardOperationAction$1.run(TransportShardReplicationOperationAction.java:430)
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
    at java.lang.Thread.run(Thread.java:722)

また、エラスティック検索ログで時々

[2013-06-07 09:42:04,122][WARN ][river.routing            ] [Ranger] no river type provided for [_river], ignoring...

私はこの時点で本当に立ち往生しています。解決策が見つかりません。さらに進めるための助けをいただければ幸いです。

4

1 に答える 1

0

私は自分がやっていた間違いを見つけました

このコード行で

 Dim jsonData As String = serializer.ToJson(data)

有効な Json オブジェクト「データ」をシリアライズしようとしています

次のコード行で「jsonData」の代わりに「data」を渡すと

 Dim indexResult As String = connection.Put(New IndexCommand("_river", "mongodb", "_meta"), jsonData)

エラーなしでインデックス作成を実行しています。

于 2013-06-07T11:11:21.870 に答える