下面的代码:
public async Task<ICollection<Concert>> GetAsync(string? filter, int page, int rows)
{
var skip = (page - 1) * rows;
var searchResponse = await _elasticClient.SearchAsync<Concert>(s => s
.From(skip)
.Size(rows)
.Query(q => q
.MatchPhrase(m => m
.Field(f => f.Title)
.Query(filter)
)
)
);
return searchResponse.Documents.ToList();
}
我有3个标题为"Bob Marley"、"Bob Marley1"和"Bob Marley2"的索引。但是,如果我以"Bob Marley"发送过滤器,它不会返回任何数据。这似乎是空格字符的问题,因为当我发送"Bob"作为过滤器时,会检索数据。我希望发送任何过滤器,然后匹配包含该单词或短语的所有索引
1条答案
按热度按时间x759pob21#
indexname中不能有空格,elasticsearch索引(SOURCE)命名规则请查看此官方文件
索引名称必须符合下列条件:
1.仅小写
1.不能包含、/、*、?、"、〈、〉、|,``(空格字符),,,#
1.不能以-、_、+开头
1.不可能。或者..
1.长度不能超过255字节(请注意,它是字节,因此多字节字符将更快地计入255限制)
1.不建议使用以.开头的名称,但隐藏索引和插件管理的内部索引除外
使用以下命令列出elasticsearch的所有索引
curl localhost:9200/_cat/indices