【问题标题】:Complex search within elasticsearch using NEST (.net)使用 NEST (.net) 在 elasticsearch 中进行复杂搜索
【发布时间】:2016-11-02 20:11:01
【问题描述】:

我正在使用 elasticsearch 2.3.4(可以更新到 5,但距离发布还有 1 周,等待对其工作方式的评论)

我正在尝试在我的 .net 类中创建搜索

ISearchResponse<ClassModel> apiResponse = client1.Search<ClassModel>(a =>
            a.Query(q =>
            q.Term(p => p.param1, Param1) &&
            q.Term(p => p.const1, "const1") &&
            q.Term(p => p.param2, param2)));

由于某种原因, const1 不返回任何值(即使我在没有其他参数的情况下单独运行它)但是使用 HD 扩展我得到了结果,也许我不应该使用 Term ?还有什么?

提前谢谢你

【问题讨论】:

  • 您是否尝试查看您的 apiReponse 中的调试信息?在那里您可以看到 NEST 生成的查询,您可以检查查询是否正确。
  • @JozefCechovsky 你能告诉我在哪里可以找到 NEST 生成的查询吗?我查了一下,没找到,确实很有帮助。
  • 感谢@JozefCechovsky,必须在连接设置中将 DisableDirectStreaming 设置为 true
  • 是的,你是对的,我忘了提到 DisableDirectStreaming

标签: elasticsearch nest elasticsearch-2.0 elasticsearch-net


【解决方案1】:

听起来您可能没有正确映射“const1”字段。

根据下面的评论进行编辑:您可以在分析的字段上使用术语查询,但它不太可能按照您的预期工作。如果您的字段“const1”包含多个单词,则搜索文本等于您索引的字符串的术语查询将不匹配。

"const1": {
    "type":     "string",
    "index":    "not_analyzed"
}

【讨论】:

  • 词条查询不需要字段为not_analyzed;您可以在 analyzed 字段上运行它,您只需要注意术语查询不会分析输入
猜你喜欢
  • 1970-01-01
  • 2020-09-30
  • 1970-01-01
  • 1970-01-01
  • 2021-07-29
  • 2017-11-19
  • 2015-08-02
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多