Я углубился в использование NEST для проекта на основе .Net, который будет использовать ElasticSearch, но то, что продолжает или меня озадачивает, заключается в том, что запросы GeoDistance никогда не возвращали никаких результатов.Гнездо (Geo) Долговечность местоположения всегда 0?
При отладке ответов на простой запрос «*» и поиске документов. Результат поиска, все экземпляры документов имеют значение долготы 0.0 - Широта, однако, является правильной.
Это ES-сервер с голой костью, как свежий, как он получает (загружается и запускается), ничего (повторно) настроено. То же самое для одного, размещенного в FacetFlow.
Что касается версий, то они 1.4.3 для Elasticsearch.Net, а также NEST, ElasticSearch - это версия 1.4.4.
Есть ли что-то, что мне не хватает здесь или точнее - чего я здесь не хватает?
Пример кода выглядит это ( класс GeoLocation используется ниже является Nest.GeoLocation один):
using System;
using System.Linq;
using Nest;
namespace NestPlayground
{
public class Post
{
public Guid Id { get; set; }
public string User { get; set; }
public DateTime CreatedAt { get; set; }
public string Message { get; set; }
public GeoLocation Location { get; set; }
}
class Program
{
static void Main(string[] args)
{
var indexName = "sampleindex";
var uri = new Uri("<elasticsearch url>");
var settings = new ConnectionSettings(uri).SetDefaultIndex(indexName);
var client = new ElasticClient(settings);
client.DeleteIndex(indexName);
var post = new Post
{
Id = Guid.NewGuid(),
User = "Some User",
CreatedAt = DateTime.UtcNow,
Message = "Some Sample Message",
Location = new GeoLocation(37.809860, -122.476995)
};
client.Index(post);
client.Refresh();
// Execute a search using the connection from above.
var result = client.Search<Post>(s => s
.Index(indexName)
.Query(queryDescriptor => queryDescriptor.QueryString(queryStringQueryDescriptor => queryStringQueryDescriptor.Query("*")))
//.Filter(filterDescriptor => filterDescriptor.GeoDistance(post1 => post1.Location, geoDistanceFilterDescriptor => geoDistanceFilterDescriptor
// .Distance(50, GeoUnit.Kilometers)
// .Location(Lat: 37.802774, Lon: -122.4478561)
// .Optimize(GeoOptimizeBBox.Indexed)))
);
// this DOES return the just created/indexed document, but its .Longitude/result.Documents.First().Location.Longtitude property is always '0'?!
}
}
}
Может вы размещаете класс геолокации, ES и версию Nest ? – Rob
Привет @Rob - верная вещь .. см. Обновленное сообщение для версий (версий) и происхождения класса GeoLocation. –