Мы используем API NEST для работы с Elasticsearch с использованием C#. Хотя мы можем вставлять данные, запросы, которые ссылаются на определенные поля в объекте, не работают.NEST-запрос для Elasticsearch не работает
Например, учитывая следующий класс:
internal class Magazine
{
public Magazine(string id, string title, string author)
{
Id = id;
Title = title;
Author = author;
}
public string Id { get; set; }
public string Title { get; set; }
public string Author { get; set; }
}
Объекты класса создаются и вставляются в ElasticSearch следующим образом:
Magazine mag1= new Magazine("1", "Soccer Review", "John Smith");
Magazine mag2= new Magazine("2", "Cricket Review", "John Smith");
Uri node = new Uri("http://localhost:9200");
ConnectionSettings settings = new ConnectionSettings(node, defaultIndex: "mag-application");
ElasticClient client = new ElasticClient(settings);
client.Index(mag1);
client.Index(mag2);
Следующий запрос работает, и возвращает две строки:
var searchResults = client.Search<Magazine>(s => s.From(0).Size(20));
Но этот ничего не возвращает:
var searchResults = client.Search<Magazine>(s => s.From(0).Size(20).Query(q => q.Term(p => p.Author, "John Smith")));
Что не так?
Большое спасибо. Первое предложение не сработало, но второе. – user1052610
Я предполагаю, что вы пробовали с «john» в нижнем регистре. «Джон» не будет найден, поскольку стандартный анализатор преобразует все токены в нижний регистр, и именно так они живут в Elasticsearch. – Manolis
отлично - исправлено это и работает. Благодаря! – user1052610