Ravendb 如何在AbstractIndexCreationTask中定义字段?

Ravendb 如何在AbstractIndexCreationTask中定义字段?,ravendb,Ravendb,我的应用程序中有一个AbstractIndexCreationTask,如下所示: public class EventsForMainQueries : AbstractIndexCreationTask<Event> { public EventsForMainQueries() { Map = docs => from doc in docs select new

我的应用程序中有一个
AbstractIndexCreationTask
,如下所示:

public class EventsForMainQueries : AbstractIndexCreationTask<Event>
{
    public EventsForMainQueries()
    {
        Map = docs => from doc in docs
                      select new
                      {
                          DatePublished = doc.DatePublished,
                          IsDeleted     = doc.IsDeleted,
                          Author        = doc.Author,
                          EventDate     = doc.EventDate
                      };

        Index(x => x.DatePublished, FieldIndexing.Default);
        Sort(x => x.DatePublished, SortOptions.String);

        Index(x => x.EventDate, FieldIndexing.Default);
        Sort(x => x.EventDate, SortOptions.String);
    }
}
公共类事件FormainQueries:AbstractIndexCreationTask
{
公共事件FormainQueries()
{
Map=docs=>来自文档中的文档
选择新的
{
DatePublished=doc.DatePublished,
IsDeleted=文件IsDeleted,
作者=文件作者,
EventDate=doc.EventDate
};
索引(x=>x.DatePublished,fieldindex.Default);
排序(x=>x.DatePublished,SortOptions.String);
索引(x=>x.EventDate,fieldindex.Default);
排序(x=>x.EventDate,SortOptions.String);
}
}
但是,RavenDB仍在创建以下自动索引


我需要在IndexCreationTask中更改什么以防止生成临时/自动索引?

您是否调用过
IndexCreation.CreateIndexes(typeof(EventsForMainQueries).Assembly,documentStore)
或以任何其他方式在服务器上创建该索引

您还可以使用以下命令“强制”读取索引:

session.Query()..

如果索引不在服务器上,则此查询不应创建临时索引

试试这个

存储索引:

EventsForMainQueries.Execute(DocumentStore);
查询事件:

Session.Query<Event, EventsForMainQueries>()
Session.Query()

Temp索引被装箱以响应未指定索引的查询。你做了什么查询?@MattJohnson根据索引名,我按
EventDate:[…]查询,并删除:…
按EventDate排序。如果没有order by,则使用我的索引,添加order by将创建带有字段的临时索引。那么,如何在代码中定义索引,以便我们在图像中看到的EventDate字段的设置在代码中复制?@GregB假设doc.EventDate是DateTime,我认为您不需要做任何事情。另外,我认为你永远不需要做索引(日期)。我没有使用与日期相关的索引/排序。我唯一一次使用索引是为了(FieldIndexing.analysis)。我确实经常使用Store()。我从索引流式传输结果,不带回完整的文档。指定索引已起作用,但我认为RavenDB在创建临时索引之前检查了它是否有可用于完成查询的索引?@GregB我看不出它需要创建自动索引的具体原因。如果使用排序,则需要注意EventDate是否为DateTime或DateTimeOffset。文本将不会得到正确的排序,因为它将按词汇排序,而不是按日期排序。谢谢,对于
DateTime
字段,正确的排序是什么?