简体   繁体   English

如何在NEST(Elasticsearch)中使用表达语法进行查询?

[英]How to query using expressive syntax in NEST (Elasticsearch)?

I am looking to write a small tool to query elasticsearch using NEST APIs and would like to support queries such as status:[400 TO 499] AND (extension:php OR extension:html) 我正在寻找一个使用NEST API来查询Elasticsearch的小型工具,并希望支持诸如status:[400 TO 499] AND (extension:php OR extension:html)

I thought that SearchQueryString or SimpleQueryString API would have helped, but it is not able to get the right results. 我以为SearchQueryStringSimpleQueryString API会有所帮助,但无法获得正确的结果。

var r = await this.client.SearchAsync<LogEvent>(s => s
    .Query(q =>
        q.SimpleQueryString(c => c.Query(searchQuery))) // searchQuery -> query string
    .From(from)
    .Size(size)
    .Index("oxyb*")
    .Sort(ss =>
        ss.Descending(f => f.TimeStamp)));

Also notice that a similar syntax is supported by elasticsearch API Query String Query 还请注意,Elasticsearch API 查询字符串查询支持类似的语法。

You can use the query_string query to support those kinds of queries. 您可以使用query_string查询来支持这些类型的查询。 These map to NEST's QueryString query 这些映射到NEST的QueryString查询

var from = 0;
var size = 20;
var searchQuery = "status:[400 TO 499] AND (extension:php OR extension:html)";
var response = await this.client.SearchAsync<LogEvent>(s => s
    .Query(q => q
        .QueryString(c => c
            .Query(searchQuery) 
        )
     )
    .From(from)
    .Size(size)
    .Index("oxyb*")
    .Sort(ss => ss
        .Descending(f => f.TimeStamp)
    )
);

which yields 产生

POST http://localhost:9200/oxyb*/logevent/_search?pretty=true 
{
  "from": 0,
  "size": 20,
  "sort": [
    {
      "timeStamp": {
        "order": "desc"
      }
    }
  ],
  "query": {
    "query_string": {
      "query": "status:[400 TO 499] AND (extension:php OR extension:html)"
    }
  }
}

You cound use the QueryString Query in nest: 您可以在巢中使用QueryString查询:

var r = client.Search<LogEvent>(s => s
    .Query(q => q.QueryString(qs => qs
       .Query("Some String")
       .AnalyzeWildcard(true)
       .DefaultOperator(Operator.And)));

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

相关问题 使用 NEST 的多搜索查询语法 API Elasticsearch - MultiSearch Query Syntax Using NEST API Elasticsearch 如何使用NEST for Elasticsearch动态创建查询 - How to dynamically create query using NEST for Elasticsearch 如何使用NEST对象初始化器语法自动映射Elasticsearch属性 - How to AutoMap Elasticsearch properties using NEST object initializer syntax 使用NEST和QueryRaw的Elasticsearch查询 - Elasticsearch query using NEST & QueryRaw 如何使用C#使用Nest Elasticsearch编写查询? - How can i write a query by using Nest Elasticsearch by C# ? 如何使用嵌套弹性搜索查询一种类型的数据限制 - how to query data limit in one type using nest elasticsearch 如何使用NEST准确表示此ElasticSearch查询? - How do I accurately represent this ElasticSearch query using NEST? 如何使用 elasticsearch Nest 客户端通过 _id 查询特定文档 - How to query for a specific document by _id using the elasticsearch Nest client 使用Nest DSL语法用多个术语过滤的ElasticSearch嵌套查询无法按预期工作 - ElasticSearch nested query filtered with multiple terms using Nest DSL syntax not working as expected MinimumShouldMatch不追加到使用Nest ElasticSearch中的对象初始化程序语法构建的Bool查询中的“ Should”子句 - MinimumShouldMatch not appending to “Should” clause in a Bool query built using object initializer syntax in Nest ElasticSearch
 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM