使用.Dotnet Nest查询并筛选为“包含”从ElasticSearch中检索数据

roejwanj  于 2022-12-29  发布在  ElasticSearch
关注(0)|答案(1)|浏览(146)

下面的代码:

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"作为过滤器时,会检索数据。我希望发送任何过滤器,然后匹配包含该单词或短语的所有索引

x759pob2

x759pob21#

indexname中不能有空格,elasticsearch索引(SOURCE)命名规则请查看此官方文件
索引名称必须符合下列条件:
1.仅小写
1.不能包含、/、*、?、"、〈、〉、|,``(空格字符),,,#

  1. 7.0之前的索引可以包含冒号(:),但这已被弃用,7.0+中也不支持
    1.不能以-、_、+开头
    1.不可能。或者..
    1.长度不能超过255字节(请注意,它是字节,因此多字节字符将更快地计入255限制)
    1.不建议使用以.开头的名称,但隐藏索引和插件管理的内部索引除外
    使用以下命令列出elasticsearch的所有索引
    curl localhost:9200/_cat/indices

相关问题