Индекс JsonObject с NEST имеет пустые значения - PullRequest
0 голосов
/ 18 мая 2018

Я хочу индексировать JsonObjects с помощью NEST, после публикации свойства находятся в индексе, но значения пусты "[]".Когда я публикую тот же json с почтальоном, результат будет правильным.

Индекс:

string indexName = "testindex";
        IIndexResponse response = client.Index<JObject>(docItem, i => i.Type("my_type").Index(indexName));

json в docItem:

{
    "Source":"test",
    "CreatedAt": "2018-05-26 12:23:33",
    "SessionId":"1234",
    "ResponseParam":{
        "ItemA":"bla",
        "ItemB": 123
    }
}

поисковый запрос:

http://[IP]:9200/testindex/_search

результат поиска

{
    "took": 8,
    "timed_out": false,
    "_shards": {
        "total": 5,
        "successful": 5,
        "skipped": 0,
        "failed": 0
    },
    "hits": {
        "total": 4,
        "max_score": 1,
        "hits": [
            {
                "_index": "testindex",
                "_type": "my_type",
                "_id": "u44ucmMB687Uyj7O8xKY",
                "_score": 1,
                "_source": {
                    "Source": [],
                    "CreatedAt": [],
                    "SessionId": [],
                    "ResponseParam": {
                        "ItemA": [],
                        "ItemB": []
                    }
                }
            },

1 Ответ

0 голосов
/ 18 мая 2018

Если вы используете JObject в качестве типа документа или ваш документ содержит JObject, вам нужно будет также сослаться на пакет Nget.JsonNetSerializer и подключить JsonNetSerializer следующим образом

 var pool = new SingleNodeConnectionPool(new Uri("http://localhost:9200"));
    var connectionSettings =
        new ConnectionSettings(pool, sourceSerializer: JsonNetSerializer.Default);

var client= новый ElasticClient (connectionSettings);Это необходимо, потому что в NEST 6.x удалена прямая зависимость от Json.NET путем слияния, интернализации и повторного пространства имен.Одно из изменений, которое это вызывает, заключается в том, что теперь NEST не знает, как специально обрабатывать Newtonsoft.Json.Linq.JObject, поэтому необходима зависимость от NEST.JsonNetSerializer, который знает, как обрабатывать этот тип специально.

Источник: https://discuss.elastic.co/t/elasticsearch-net-nest-issue-with-api-after-upgrade-to-6-2-3/127690

...