elastic / elasticsearch-net

This strongly-typed, client library enables working with Elasticsearch. It is the official client maintained and supported by Elastic.
https://www.elastic.co/guide/en/elasticsearch/client/net-api/current/index.html
Apache License 2.0
13 stars 1.15k forks source link

Elastic.Transport.UnexpectedTransportException: 'The JSON value could not be converted to Elastic.Clients.Elasticsearch.Ingest.InferenceConfig' #7913

Open AntonDambrouski opened 1 year ago

AntonDambrouski commented 1 year ago

Elastic.Clients.Elasticsearch version: 8.9.2

Elasticsearch version: 8.9.1

.NET runtime version: net6.0

Operating system version: Windows 10

Description of the problem including expected versus actual behavior: The problem is that I'm trying to get info about the specific pipeline. If it dosn't exist - everything works fine, it returns 404 response. But if I have pipeline with 'inference_config', it throws the exception that it could not parse the json.

Steps to reproduce:

  1. Create pipeline with 'inference_config' set;
    {
    "example-pipeline": {
    "description": "Text embedding pipeline",
    "processors": [
      {
        "inference": {
          "model_id": ".elser_model_1",
          "target_field": "ml",
          "field_map": {
            "name": "text_field"
          },
          "inference_config": {
            "text_expansion": {
              "results_field": "tokens"
            }
          }
        }
      }
    ]
    }
    }
  2. Request this pipeline using .Net; var response = client.Ingest.GetPipeline(p => p.Id("example_pipeline"));

Expected behavior The client returns info about pipeline (if exists) without throwing any errors.

Provide DebugInformation (if relevant): Elastic.Transport.UnexpectedTransportException HResult=0x80131500 Message=The JSON value could not be converted to Elastic.Clients.Elasticsearch.Ingest.InferenceConfig. Path: $.inference_config | LineNumber: 0 | BytePositionInLine: 179. Source=Elastic.Transport StackTrace: at Elastic.Transport.DefaultHttpTransport1.ThrowUnexpectedTransportException[TResponse](Exception killerException, List1 seenExceptions, RequestData requestData, TResponse response, RequestPipeline pipeline) at Elastic.Transport.DefaultHttpTransport1.Request[TResponse](HttpMethod method, String path, PostData data, RequestParameters requestParameters) at Elastic.Clients.Elasticsearch.ElasticsearchClient.DoRequest[TRequest,TResponse,TRequestParameters](TRequest request, Action1 forceConfiguration) at Program.

$(String[] args) in ...\Program.cs:line 11

This exception was originally thrown at this call stack: [External Code]

Inner Exception 1: JsonException: The JSON value could not be converted to Elastic.Clients.Elasticsearch.Ingest.InferenceConfig. Path: $.inference_config | LineNumber: 0 | BytePositionInLine: 179.

flobernd commented 7 months ago

Hi @AntonDambrouski, does this issue still exist in 8.13.x?

AntonDambrouski commented 5 months ago

Hello @flobernd, the issue still persists, but the method GetPipeline() is marked as obsolete. BTW I solved my task without this method, so if it is obsolete I guess we can close this issue. What do you think?

Here is the error details:

Elastic.Transport.UnexpectedTransportException HResult=0x80131500 Message=Unknown property name 'text_expansion' received while deserializing the 'InferenceConfig' from the response. Source=Elastic.Transport StackTrace: at Elastic.Transport.DistributedTransport1.ThrowUnexpectedTransportException[TResponse](Exception killerException, List1 seenExceptions, RequestData requestData, TResponse response, RequestPipeline pipeline) at Elastic.Transport.DistributedTransport1.<RequestCoreAsync>d__161.MoveNext() at System.Threading.Tasks.ValueTask1.get_Result() at System.Runtime.CompilerServices.ValueTaskAwaiter1.GetResult() at Elastic.Transport.TaskExtensions.EnsureCompleted[T](ValueTask1 task) at Elastic.Transport.DistributedTransport1.Request[TResponse](HttpMethod method, String path, PostData data, RequestParameters requestParameters, OpenTelemetryData& openTelemetryData) at Elastic.Clients.Elasticsearch.ElasticsearchClient.<>c__DisplayClass28_03.<<DoRequestCoreAsync>g__SendRequest|0>d.MoveNext() at Elastic.Clients.Elasticsearch.Ingest.IngestNamespacedClient.GetPipeline(Action1 configureRequest) at Program.

$(String[] args) in..\Program.cs:line 8

This exception was originally thrown at this call stack: [External Code]

Inner Exception 1: JsonException: Unknown property name 'text_expansion' received while deserializing the 'InferenceConfig' from the response.