[英]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. 我以为
SearchQueryString
或SimpleQueryString
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.