【问题标题】:nest elasticsearch : how to target multi types in SearchRequest Object?嵌套弹性搜索:如何在 SearchRequest 对象中定位多种类型?
【发布时间】:2017-02-16 21:27:06
【问题描述】:

我想使用 SearchRequest 对象对几种类型进行请求

我的请求类似于下面的代码:

var searchQuery = new BoolQuery
 {
      Should = shouldContainers,
      Filter = filterContainers
 };

var searchRequest = new SearchRequest<dynamic>()
{
     //Don't know how to target type
     Type = EType.All,
     //or 
     Type = typeof(obj1) && typeof(obj2)  
     Query = searchQuery,
     Size = size
     From = fromNumber,
     MinScore = 1
};

var response = await client.SearchAsync<dynamic>(searchRequest);

你知道是否有可能做这样的事情以及如何做到这一点?

【问题讨论】:

    标签: elasticsearch nest


    【解决方案1】:

    如果你没有在端点中指定索引/类型,它将搜索整个集群。

    更新:

        //
        // Summary:
        //     /_search
        //
        // Parameters:
        //   document:
        //     describes an elasticsearch document of type T, allows implicit conversion from
        //     numeric and string ids
        public SearchRequest();
    
        //
        // Summary:
        //     /{index}/_search
        //
        // Parameters:
        //   index:
        //     Optional, accepts null
        public SearchRequest(Indices index);
    
        //
        // Summary:
        //     /{index}/{type}/_search
        //
        // Parameters:
        //   index:
        //     Optional, accepts null
        //
        //   type:
        //     Optional, accepts null
        public SearchRequest(Indices index, Types type);
    
        // The second one is what you are looking for, query on specific index regardless type, it does `POST /{index}/_search`
    
        var searchRequest = new SearchRequest(myIndex){...} 
        var result = client.Search<dynamic>(searchRequest);
    

    【讨论】:

    • 谢谢,但 ip 似乎产生了一个请求:POST: /index/object/_search 它没有给我任何结果
    • 我有var searchRequest = new SearchRequest(){...} var result = client.Search&lt;dynamic&gt;(searchRequest); 我可以看到实际请求是POST /_search 查询所有指标和所有类型
    • 是的,如果我写 var searchRequest = new SearchRequest() 而不是 var searchRequest = new SearchRequest() ,它会请求所有类型!!! :D 谢谢。但不幸的是它也在所有索引上(我不想要这个):( :(
    • 那么你可以使用var searchRequest = new SearchRequest(index){...} // Summary: // /{index}/_search // // Parameters: // index: // Optional, accepts null public SearchRequest(Indices index);
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-07-19
    • 1970-01-01
    相关资源
    最近更新 更多