使用NEST / Elasticsearch.Net执行原始JSON请求

时间:2018-10-11 16:03:48

标签: c# elasticsearch nest

与使用NEST提供的语法相比,使用纯JSON编写某些(高级)请求更容易。 CreatePostAsync界面中有一个IElasticLowLevelClient,但专门使用了Index API。

我不想直接使用HttpClient,因为那样我就缺少maximum retries等功能。

是否可以使用NEST / Elasticsearch.Net客户端向Elasticsearch(GETPOST等)发出任何请求?

2 个答案:

答案 0 :(得分:1)

如果要发出任何请求,则可以在低级客户端上使用<?xml version="1.0" encoding="UTF-8"?> <project version="4"> <component name="AndroidLayouts"> <shared> <config /> </shared> </component> <component name="CMakeSettings"> <configuratio

DoRequest/DoRequestAsync

还在var lowLevelClient = new ElasticLowLevelClient(); var stringResponse = lowLevelClient.DoRequest<StringResponse>( HttpMethod.POST, "_search", PostData.Serializable(new { query = new { match_all = new { } } })); 属性中的高级客户端NEST上暴露

.LowLevel

答案 1 :(得分:0)

如果您使用的是NEST,则可以使用Raw查询。 https://www.elastic.co/guide/en/elasticsearch/client/net-api/current/raw-query-usage.html

  

允许以JSON字符串表示的查询传递给NEST的   流利的API或对象初始化程序语法。这在以下情况下很有用   将查询DSL中表示的查询移植到NEST。

您应该能够执行以下操作:

query.Raw(yourJsonQueryString)

编辑: 如果您想使用_reindex,则可以使用reindex API。

var reindexResponse = client.ReindexOnServer(r => r
    .Source(s => s
        .Index("old-index")
    )
    .Destination(d => d
        .Index("new-index")
    )
    .WaitForCompletion(true)
);