NEST Returns 模糊搜索上没有任何内容
NEST Returns Nothing on Fuzzy Search
我在 Sense 中使用以下查询并返回了一些结果:
POST myindex/mytype/_search
{
"query": {
"fuzzy_like_this_field" : {
"BookLabel" : {
"like_text" : "myBook",
"max_query_terms" : 12
}
}
}
}
但是使用 Nest 的以下代码我什么也得不到:
var docs = client.Search<dynamic>(b => b
.Index("myindex")
.Type("mytype")
.Query(q => q
.Fuzzy(fz => fz
.OnField("BookLabel")
.Value("myBook")
)
)
).Documents.ToList();
我看不出它们之间的区别。我错过了什么?
上面的 NEST 查询会生成以下查询 DSL
{
"query": {
"fuzzy": {
"BookLabel": {
"value": "myBook"
}
}
}
}
要获得最接近 fuzzy_like_this_field
查询的等价物 (which is deprecated in Elasticsearch 1.6.0 and will be removed in 2.0),您可以 运行 一个 fuzzy_like_this
查询只在你感兴趣的领域
void Main()
{
var settings = new ConnectionSettings(new Uri("http://localhost:9200"));
var connection = new InMemoryConnection(settings);
var client = new ElasticClient(connection: connection);
var docs = client.Search<dynamic>(b => b
.Index("myindex")
.Type("mytype")
.Query(q => q
.FuzzyLikeThis(fz => fz
.LikeText("myBook")
.MaxQueryTerms(12)
.OnFields(new [] { "BookLabel" })
)
)
);
Console.WriteLine(Encoding.UTF8.GetString(docs.RequestInformation.Request));
}
这将输出以下查询 DSL
{
"query": {
"flt": {
"fields": [
"BookLabel"
],
"like_text": "myBook",
"max_query_terms": 12
}
}
}
这应该会产生与您在 Sense 中看到的相同的结果。
我在 Sense 中使用以下查询并返回了一些结果:
POST myindex/mytype/_search
{
"query": {
"fuzzy_like_this_field" : {
"BookLabel" : {
"like_text" : "myBook",
"max_query_terms" : 12
}
}
}
}
但是使用 Nest 的以下代码我什么也得不到:
var docs = client.Search<dynamic>(b => b
.Index("myindex")
.Type("mytype")
.Query(q => q
.Fuzzy(fz => fz
.OnField("BookLabel")
.Value("myBook")
)
)
).Documents.ToList();
我看不出它们之间的区别。我错过了什么?
上面的 NEST 查询会生成以下查询 DSL
{
"query": {
"fuzzy": {
"BookLabel": {
"value": "myBook"
}
}
}
}
要获得最接近 fuzzy_like_this_field
查询的等价物 (which is deprecated in Elasticsearch 1.6.0 and will be removed in 2.0),您可以 运行 一个 fuzzy_like_this
查询只在你感兴趣的领域
void Main()
{
var settings = new ConnectionSettings(new Uri("http://localhost:9200"));
var connection = new InMemoryConnection(settings);
var client = new ElasticClient(connection: connection);
var docs = client.Search<dynamic>(b => b
.Index("myindex")
.Type("mytype")
.Query(q => q
.FuzzyLikeThis(fz => fz
.LikeText("myBook")
.MaxQueryTerms(12)
.OnFields(new [] { "BookLabel" })
)
)
);
Console.WriteLine(Encoding.UTF8.GetString(docs.RequestInformation.Request));
}
这将输出以下查询 DSL
{
"query": {
"flt": {
"fields": [
"BookLabel"
],
"like_text": "myBook",
"max_query_terms": 12
}
}
}
这应该会产生与您在 Sense 中看到的相同的结果。