在Elasticsearch上使用C#NEST API:
open -n -a RStudio.app
查询应该在/ sc_all / index上运行,但是它运行在/ sc_all / product / index(它不存在 - / product /似乎是因为搜索而添加,因为T = product )。
如果我这样做,/ product /将替换为常量的值,即/ sc_all / product / => / sc_all / constant_value /:
var searchResults = client.Search<Product>(s => s
.Index(Constants.ElasticSearchIndex)
.Query(q => q
.Raw(jsonRequest)
)
);
如果我只想查询/ sc_all /而不是其他内容,该怎么办?
谢谢!
Json请求:
&#34; {\&#34;过滤了&#34;:{\&#34;查询\&#34;:{\&#34; match_all \&#34;:{}}, \&#34;过滤\&#34;:{\&#34;嵌套\&#34; :{\&#34; path \&#34; :\&#34;产品\&#34;,\&#34;过滤\&#34;:{\&#34;嵌套\&#34; :{\&#34; path \&#34; :\&#34; products.da \&#34;,\&#34;过滤\&#34;:{\&#34; bool \&#34;:{\&#34;必须\&# 34;:[{\&#34;查询\&#34;:{\&#34; query_string \&#34;:{\&#34; default_field \&#34; :\&#34; products.da.content \&#34;,\&#34;查询\&#34; :\&#34; kildemoes \&#34;}}}]}}}}}}}},\&#34;来自\&#34;:0,\&#34; size \&#34; :100&#34;
答案 0 :(得分:1)
您只需指定使用.AllTypes()
var jsonRequest = "{ \"match_all\": {} }";
var searchResults = client.Search<Product>(s => s
.Index(Constants.ElasticSearchIndex)
.AllTypes()
.Query(q => q
.Raw(jsonRequest)
)
);
将生成以下请求
POST http://localhost:9200/sc_all/_search
{
"query": { "match_all": {} }
}
请记住,所有返回的文档都会尝试反序列化为Product
的实例,因此,如果您要定位多种不同的类型,则可能需要使用公共基本类型或dynamic
,利用covariant search results。