ElasticSearch NESTを使用すると、クエリから期待される結果を取り戻すのに問題があります。私のインデックス/タイプのレイアウトは次のとおりです。
これらのタイプにはそれぞれ独自のフィールドがあり、NESTのIndex()メソッドを使用してデータにインデックスを付けています。次の方法で、適切にインデックスが作成されていることを確認できます。
http://localhost:9200/theatres/_mapping
参考までに、これが私のクライアント構成です。
// TODO: Put settings in config
var node = new Uri("http://localhost:9200");
var connSettings = new ConnectionSettings(node);
connSettings.SetDefaultIndex("theatres");
connSettings.ThrowOnElasticsearchServerExceptions();
var client = new ElasticClient(connSettings);
クエリ
ここで、クエリについて、インデックス内のallタイプとallフィールドを検索します。 Headプラグインを使用して、クエリを生成し、期待される結果を得ることができます。
生成されたクエリを使用して、次のNESTクエリを試しました。
var query = "waukesha"; // This would be passed in
var resp = client.Search<dynamic>(s => s
.From(0)
.Take(10)
.Query(qry => qry
.Bool(b => b
.Must(m => m
.QueryString(qs => qs
.DefaultField("_all")
.Query(query))))));
ただし、これでは別の結果が得られます。 NESTは私が知らない舞台裏で何かをしているのですか?または、これはサポートされていませんか?
クエリに.AllTypes()
がありません
.Types("type1", "type1")
を使用して複数のタイプを指定することもできます
そう:
var query = "waukesha"; // This would be passed in
var resp = client.Search<dynamic>(s => s
.AllTypes()
.From(0)
.Take(10)
.Query(qry => qry
.Bool(b => b
.Must(m => m
.QueryString(qs => qs
.DefaultField("_all")
.Query(query))))));