Crud opearation is not working in Elasticsearch nest 5.0


#1

public class Animal
{
public const string SearchIndex = "animals";
public int Id { get; set; }
public string AnimalType { get; set; }
public string TypeSpecificForAnimalType { get; set; }
public string Description { get; set; }
public string Gender { get; set; }
public string LastLocation { get; set; }

}
private void ValidateIfIdIsAlreadyUsedForIndex(string id)
	{
		var idsList = new List<string> { id };
		var result = _elasticsearchClient.Search<Animal>(s => s
			.Index("animals")
			.AllTypes()
			.Query(p => p.Ids(idsList)));
		if (result.Documents.Any()) throw new ArgumentException("Id already exists in store");
	}

I am using nest version 5.0.0.0 and error i am getting
cannot convert from 'System.Collections.Generic.List' to 'System.Func<Nest.IdsQueryDescriptor,Nest.IIdsQuery>'


(Ashley Mannix) #2

That's because the .Ids method takes a lambda function instead of just a list of ids. You can get the same behaviour by calling:

.Query(p => p.Ids(ids => ids.Values(id)))

Note that .Values takes a params string[], so you don't need idsList, you can just pass your one id parameter straight in.


#3

Thanks , But this previous code is working in nest 1.0.0.0


(Ashley Mannix) #4

The API for NEST must have changed at some point. There were big changes between 1.x and 2.x so it might have been around then. I haven't really used ids queries so I'm not sure :slight_smile:


(system) #5

This topic was automatically closed 28 days after the last reply. New replies are no longer allowed.