C # Elasticsearch NEST cannot convert lambda expression

I ran into the same problem (and did not answer) here ElasticSearch NEST Search

I use:

  • .NET Framework 4.5;

  • ASP.NET MVC 5;

  • Elasticsearch 1.6.0 (on the server);

  • Elasticsearch.NET 1.6.1

  • NEST 1.6.1

I have an MVC controller that has two actions:

  • Index - containing the HTML form of the user interface

  • Search - containing the Elasticsearch.NET client and request.

    public ActionResult Search(SearchCreteria sc)
    {
      Settings settings = new Settings();
      Client client = new Client(settings);
      ElasticsearchClient esClient = client.Get();
    
      var test = esClient.Search<Contract>(body => body.Query(query => query.QueryString(qs => qs.Query("test"))));
    
      return View(test);
    }
    

The whole "body => body.Query (query => query.QueryString (qs => qs.Query (" test ")))" lambda expression in the above code has a reddish underline with the following hint:

(Parameter)? Body

Error:

Cannot convert lambda expression to type 'object' because it is not a delegate type

, 99% , System.Linq.

.. , , , NEST - (, , , NEST), , , , :

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

using System.Web.Mvc;
using WebUI.Models.Concrete;

using Domain.Concrete.Entities;
using Domain.Concrete.Connectivity.Elastic;
using Domain.Concrete.Processors.Elastic;

using Elasticsearch;
using Elasticsearch.Net;
using Elasticsearch.Net.Connection.Configuration;
using Elasticsearch.Net.Connection.RequestState;
using Elasticsearch.Net.Connection.Security;
using Elasticsearch.Net.ConnectionPool;
using Elasticsearch.Net.Exceptions;
using Elasticsearch.Net.Providers;
using Elasticsearch.Net.Serialization;

using Nest;
using Nest.Domain;
using Nest.DSL.Descriptors;
using Nest.DSL.Query;
using Nest.DSL.Query.Behaviour;
using Nest.DSL.Visitor;
using Nest.Resolvers.Converters.Aggregations;
using Nest.Resolvers.Converters.Filters;
using Nest.Resolvers.Converters.Queries;
using Nest.Resolvers.Writers;

, , . , , , .

+4
2

, googlers.

Elasticsearch.NET

ElasticsearchClient barebones, , / byte[]. . node failover . 80% .

, Elasticsearch, , , , Json.NET. , Serilog.Sinks.Elasticsearch

NEST

ElasticClient 99,9% . 99/100 , . NEST Elasticsearch.NET API elasticsearch .

+4

, NEST.

var node = new Uri(elasticSearchURI);
var connectionPool = new SniffingConnectionPool(new[] { node });

var config = new ConnectionSettings(connectionPool)
                        .SniffOnConnectionFault(false)
                        .SniffOnStartup(false)
                        .SetTimeout(600000)
                        .DisablePing();

_Instance = new ElasticClient(config);

var result = _Instance.Search<Location>(s => s
              .Index("index")
              .Type("type")
              .Query(q =>
              {
                QueryContainer locationQuery = null;
                locationQuery |= q.QueryString(qs=>qs.OnFields(f => f.RecordValue).Query(term).MinimumShouldMatchPercentage(100));
                return locationQuery;
              })
             .Take(1)
             .Sort(sort => sort.OnField("_score").Descending())
           );

, QueryContainers

   var result = _Instance.Search<Location>(s => s
                  .Index("index")
                  .Type("type")
                  .Query(q => q.QueryString(qs=>qs.OnFields(f => f.RecordValue).Query(term).MinimumShouldMatchPercentage(100))
                  .Take(10)
                  .Sort(sort => sort.OnField("_score").Descending())
               );
-1

All Articles