【问题标题】:NEST TermQuery for ElasticSearch not workingElasticSearch 的 NEST TermQuery 不起作用
【发布时间】:2020-08-05 20:28:05
【问题描述】:

给定

string author = "John Smith";

以下使用 NEST 的 lambda 查询有效:

string firstname = author.Split().First().ToLower();
var searchResults = client.Search<Magazine>(s => s.From(0).Size(5000).Query(q => q.Term(p => p.Author, author)));

但是,使用 OIS(对象初始化语法)的相同查询不起作用:

author = author.Split().First().ToLower();

QueryContainer query = new TermQuery
{
   Field = "Author",
   Value = author
};

var searchRequest = new SearchRequest
{
   From = 0,
   Size = 10,
   Query = query
};

var searchResults = client.Search<Magazine>(searchRequest);

怎么了?

【问题讨论】:

标签: elasticsearch nest


【解决方案1】:

尝试使用驼峰形式的字段名称:- 我认为在使用 OIS 语法或原始查询时需要这样做。

author = author.Split().First().ToLower();

QueryContainer query = new TermQuery
{
   Field = "author",
   Value = author
};

var searchRequest = new SearchRequest
{
   From = 0,
   Size = 10,
   Query = query
};

var searchResults = client.Search<Magazine>(searchRequest); 

【讨论】:

    【解决方案2】:

    为QueryContainer添加“关键字”后缀:

    QueryContainer query = new TermQuery
    {
       Field = "Author",
       Value = author
    };
    query.Suffix("keyword");
    var searchRequest = new SearchRequest
    {
       From = 0,
       Size = 10,
       Query = query
    };
    
    var searchResults = client.Search<Magazine>(searchRequest); 
    

    试一试就可以了

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-07-06
      • 1970-01-01
      • 2022-01-22
      • 2015-12-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多