私はNEST APIを使用してelasticsearchをクエリするための小さなツールを書くことを考えています。 status:[400 TO 499] AND (extension:php OR extension:html)
私は思った 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)));
同様の構文がelasticsearch APIでサポートされていることにも注意してください クエリ文字列クエリ
回答:
回答№1は1あなたは query_string
これらの種類のクエリをサポートするためのクエリ。これらは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)
)
);
結果は
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)"
}
}
}
回答№2の場合は0
あなたは QueryString
ネスト内のクエリ:
var r = client.Search<LogEvent>(s => s
.Query(q => q.QueryString(qs => qs
.Query("Some String")
.AnalyzeWildcard(true)
.DefaultOperator(Operator.And)));