ElasticSearch.net NEST在查询中使用通配符索引

时间:2017-07-05 10:43:09

标签: c# elasticsearch

您好我是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" filter有一个查询:而不是样本中的任何内容。 所以目前查询似乎是正确的,但我不知道我的索引数据是否正确。 你能建议如何尝试使用像我的表中选择前100 *的东西,看看我是否能找到数据,然后尝试实现过滤器??? 再次感谢你

2 个答案:

答案 0 :(得分:1)

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

var client = new ElasticClient();

client.Search<MyObject>(s=>s
     .Index("myindexes-*")
     ...
)

答案 1 :(得分:0)

您应该能够在索引中使用通配符...您的查询是否无效?