/ / NEST(Elasticsearch)で表現構文を使用してクエリを実行する方法 - elasticsearch、nest

NEST(Elasticsearch)で表現構文を使用してクエリを実行する方法 - elasticsearch、nest

私は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)));