【问题标题】:ElasticSearch.net NEST use a Wildcard index in queryElasticSearch.net NEST 在查询中使用通配符索引
【发布时间】:2017-07-19 21:37:03
【问题描述】:

您好,我是 Elastic Search 的新手,我正在做一些实验来了解通过 ElasticSearch.net 和 NEST 进行查询的基础知识。 我正在尝试使用以下语法翻译查询:

curl -XGET 'http://myserver.com:9200/myindexes-*/XY/_search/?size=1000&pretty=1' -d '
{
  "query": { 
    "bool": { 
      "filter": [ 
        { "match":  { "LOGTYPE" : "XY" }},
        { "match": { "USER" : "mrossi" }}, 
        { "wildcard": { "DATA": "m.rossi*" }},
        { "match": { "CODE" : "WZ" }},
        { "range": { "timestamp": { "gte": "2015-05-02" }}} 
      ]
    }    
  }
}
'

我已经找到了如何构建多字段查询(感谢发布它的人),但我仍然需要了解如何在查询中创建通配符索引。 为 Elastic Search 引擎提供数据的团队创建了一个格式为 MyIndexes-YYYYMMDD 的索引,每个日期都有一个索引,因为每个日期都有数百万行数据(它们是日志文件)。我还没有找到一种方法来对多个索引进行查询,如果它像在索引名称中写入通配符那么简单,或者我需要做一些不同的事情。 如果您有任何线索,请提前感谢您。


在对收到的答案进行了一些测试后进行了编辑:我尝试了一些测试,即使对弹性搜索的调用似乎成功读取了结果,我也无法理解我的查询是否有问题没有数据。

Valid NEST response built from a successful low level call on POST: /myindex-%2A/ml/_search?pretty=true
# Audit trail of this API call:
 - [1] HealthyResponse: Node: http://username:pwd@mydomain.com:9200/ Took: 00:00:00.0580006
# Request:
{"size":1000,"query":{"bool":{"filter":[{"match":{"LOGTYPE":{"query":"XY"}}}]}}}
# Response:
{
  "took" : 31,
  "timed_out" : false,
  "_shards" : {
    "total" : 270,
    "successful" : 270,
    "failed" : 0
  },
  "hits" : {
    "total" : 0,
    "max_score" : null,
    "hits" : [ ]
  }
}

以上数据是我从响应的DebugInformation中看到的。我的不确定性与 POST 命令的构建方式有关,事实上,即使我的实体在帖子中命名为 XY 大写以小写形式出现,并且 pretty 变量的值是 true 而不是 1。size 参数在内部设置请求而不是像我在第一条消息中发布的示例中那样作为 POST 的变量。 我简化了过滤器以仅设置一个过滤器,并且在请求数据中我看到在我的示例中“XY”过滤器有一个查询:而不是像示例中那样什么都没有。 所以目前查询似乎在语法上是正确的,但我不知道它在我的索引数据上是否正确。 你能建议如何尝试使用 select top 100 * from my table 之类的东西,看看我是否能找到数据,然后尝试实施过滤器??? 再次感谢您

【问题讨论】:

    标签: c# elasticsearch


    【解决方案1】:

    您可以在查询的索引名称部分使用通配符。

    var client = new ElasticClient();
    
    client.Search<MyObject>(s=>s
         .Index("myindexes-*")
         ...
    )
    

    【讨论】:

    • 我已经尝试过您的建议,但星号编码为 %2A,也许它可以工作,因为响应说请求正常,但我没有返回数据,我无法理解如果是由于我的过滤器或由于它没有找到正确的索引。我会尝试更多的测试,让你知道无论如何谢谢你的回答
    【解决方案2】:

    您应该能够在索引中使用通配符...您的查询不起作用吗?

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-08-01
      • 2016-10-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-06-26
      相关资源
      最近更新 更多