当前位置: 首页 > 面试题库 >

Elasticsearch.net客户端无法进行基本搜索

井疏珂
2023-03-14
问题内容

我有一个基本的Elasticsearch查询,看起来像这样

POST /fruit/_search
{"query":{"term":{"Name":"banana"}}}

我得到了结果,从合理的角度来看,这没有问题。

所以我尝试在elasticsearch.net中做到这一点

var requestBody = new { query = new { term = new { Name = "banana" } } };
                var result = client.Search<string>("fruit", requestBody);

而且我没有任何结果。如果我只有一个带有新{}的搜索正文,那么我会获得点击率,但不会被过滤。

我究竟做错了什么?


问题答案:

如果直接使用低级客户端(elasticsearch.net),它将不会进行任何规范化处理并逐字序列化对象:

var query = new { query = new { term = new { Name = "banana" } } };
var json = new ElasticsearchClient().Serializer.Serialize(query).Utf8String();

这将导致以下json:

{
  "query": {
    "term": {
      "Name": "banana"
    }
  }
}

如果使用NEST,则默认行为是camelCase属性名称(NEST被认为是):

{
  "query": {
    "term": {
      "name": "banana"
    }
  }
}

如果您通过高级客户端(client.Raw)使用低级客户端,它将使用与高级客户端完全相同的序列化设置。

您可以通过以下方法在高级客户端上控制此行为:

var connectionSettings = new ConnectionSettings()
    .SetDefaultPropertyNameInferrer(p=>p);
var client = new ElasticClient(connectionSettings);


 类似资料:
  • 在Github和在线上,我看到了多个版本的Feign客户端Spring-Cloud、OpenFeign、Netflix.Feign都有不同的版本。谁能描述一下在生产中应该使用的最好的和稳定的假客户是什么? 应用: 我尝试了所有可能的注释排列,认为它可以解决自动操作的东西,但还是失败了

  • 项目有qt,介绍下qt的信号槽机制,底层实现原理了解吗 c++语法系列 智能指针介绍下 delete delete[]区别 stl容器 vector set map unordered set map什么实现 哈希冲突算法介绍下 cpp文件编译过程介绍下 main函数开始之前有什么其他的 crt了解吗 运行时库? 完全没听说过 -mt -md windows下的什么东西,没听说过 手撕头插法反转链

  • 问题内容: 我正在准备一个带有Elasticsearch的现场搜索引擎,并且是Elasticsearch的新手。使用此引擎的网站为 土耳其语/英语 。 在土耳其,我们有土耳其字母,例如 “ğ”,“ü”,“ş”,“ı”,“ö”,“ç” 。但是,当我们通常搜索时,我们使用字母 ‘g’,’u’,’s’,’i’,’o’,’c’ 。 这不是规则,但我们通常会这样做,就像习惯一样,这是我们以前习惯的。 现在,

  • URI 方法 URI() string 返回当前客户端使用的服务器地址。 SetURI 方法 SetURI(uri string) 设置当前客户端使用的服务器地址。如果你想要设置多个服务器地址,请使用 SetURIList 方法代替该方法。 URIList 方法 URIList() []string 返回当前客户端可使用的服务器地址列表。 SetURIList 方法 SetURIList(uriL

  • web应用程序的单点登录(SSO)(通过浏览器使用)已得到充分的证明和确立。为富客户端建立SSO比较困难,通常建议基于Kerberos票证,尤其是使用Windows登录域中的ActiveDirectory。 但是,我正在为以下问题寻找一个更通用的解决方案:我需要建立“真正的”SSO(所有应用程序的一个标识,即不仅仅是跨应用程序的密码同步),其中在客户端(非托管计算机,包括非Windows),“最终

  • 我正在准备一个带有elasticsearch的站内搜索引擎,我是elasticsearch的新手。将使用此引擎的站点为土耳其语/英语。 在土耳其,我们有像 'ğ', 'ü', 'ş', 'ı', 'ö', 'ç'. 这样的土耳其字母,但是当我们通常搜索时,我们会使用字母“g”、“u”、“s”、“i”、“o”、“c”。这不是一个规则,但我们通常会这样做,像习惯一样思考,这是我们过去习惯的。 现在,我