Elasticsearch NEST API - 查询正确的索引

时间:2016-11-18 09:37:01

标签: c# search elasticsearch nest

在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;

1 个答案:

答案 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