在Nest 1.7.1中,Delete或DeleteByQuery对我来说都不起作用。
我试图删除以下文件:
Article article1 = new Article()
{
Id = 1111,
Title = "Title - Test Elastic Search",
Summary = "Summary - Test Elastic Search",
Body = "Body - Test Elastic Search",
ArticleDate = _dateToday,
Author = new Author() { Id = 100, Name = "Mikey" },
};
Article article2 = new Article()
{
Id = 2222,
Title = "Title - Test Elastic Search",
Summary = "Summary - Test Elastic Search",
Body = "Body - Test Elastic Search",
ArticleDate = _dateToday,
Author = new Author() { Id = 100, Name = "Mikey" },
Published = true
};
_elasticClient.DeleteByQuery<Article>(q => q.Query(t => t.Term(m => m.OnField(f => f.Id).Value(articleId))))
.Found;
_elasticClient.DeleteByQuery<Article>(q => q.MatchAll()).IsValid;
下面是一个工作示例
void Main()
{
var settings = new ConnectionSettings(new Uri("http://localhost:9200"), "articles");
var client = new ElasticClient(settings);
if (client.IndexExists("articles").Exists)
{
client.DeleteIndex("articles");
}
client.CreateIndex("articles", c => c
.AddMapping<Article>(m => m
.MapFromAttributes()
)
);
var today = DateTime.Now.Date;
var article1 = CreateArticle(1111, today);
var article2 = CreateArticle(2222, today);
var article3 = CreateArticle(3333, today);
var article4 = CreateArticle(4444, today);
var bulkRequest = new BulkDescriptor();
bulkRequest.Index<Article>(i => i.Document(article1));
bulkRequest.Index<Article>(i => i.Document(article2));
bulkRequest.Index<Article>(i => i.Document(article3));
bulkRequest.Index<Article>(i => i.Document(article4));
bulkRequest.Refresh();
client.Bulk(bulkRequest);
var searchResponse = client.Search<Article>(q => q.MatchAll());
Console.WriteLine("Documents from search: {0}. Expect 4", searchResponse.Documents.Count());
client.Delete(article1, d => d.Refresh());
searchResponse = client.Search<Article>(q => q.MatchAll());
Console.WriteLine("Documents from search {0}. Expect 3", searchResponse.Documents.Count());
client.Delete(article2, d => d.Refresh());
searchResponse = client.Search<Article>(q => q.MatchAll());
Console.WriteLine("Documents from search {0}. Expect 2", searchResponse.Documents.Count());
client.DeleteByQuery<Article>(q => q.MatchAll());
searchResponse = client.Search<Article>(q => q.MatchAll());
Console.WriteLine("Documents from search {0}. Expect 0", searchResponse.Documents.Count());
}
private Article CreateArticle(int id, DateTime articleDate)
{
return new Article()
{
Id = id,
Title = "Title - Test Elastic Search",
Summary = "Summary - Test Elastic Search",
Body = "Body - Test Elastic Search",
ArticleDate = articleDate,
Author = new Author() { Id = 100, Name = "Mikey" },
Published = true
};
}
public class Article
{
public int Id { get; set;}
public string Title{ get; set;}
public string Summary { get; set;}
public string Body { get; set;}
public DateTime ArticleDate { get; set; }
public Author Author { get; set; }
public bool Published { get; set;}
}
public class Author
{
public int Id { get; set; }
public string Name { get; set;}
}
中的结果
Documents from search: 4. Expect 4
Documents from search 3. Expect 3
Documents from search 2. Expect 2
Documents from search 0. Expect 0
不出所料。
需要记住的一点是,Elasticsearch最终是一致的,这意味着被索引的文档直到刷新间隔(默认为1秒)后才出现在搜索结果中;同样,对于删除查询,标记为删除的文档将出现在搜索结果中,直到刷新间隔过去。
但是,对于具有给定id的给定文档的GET请求将在刷新间隔之前返回该文档。
如果需要文档是可搜索的(或者删除后不显示在搜索结果中),可以在操作后刷新索引,就像我在上面对bulk和delete调用所做的那样,使用.refresh()
。您可能会在每次操作后调用refresh,但是我建议只在真正需要时使用它,因为它会增加集群的开销,并且一直调用可能会降低性能。
问题内容: 我需要添加一个表的2个单元格内容并显示它。下面的JavaScript命令在chrome或IE10中可以正常工作。 但不能在IE8或7中使用 。 结果, N 您能否告诉我 IE7或IE8中 的 等效命令 是什么 , 以读取表的单元格内容并将其转换为float然后添加。 问题答案: IE7 /8不支持textContent。后者具有称为innerText的不同属性,该属性返回DOM节点的文
我正在用spring做一个rest API来做crud操作。在我的angular应用程序中,删除HTTP客户端不起作用,当我单击删除按钮时,选定的id不会被删除。我知道我的服务器正在运行,并且控制器代码是正确的。 这是员工列表.组件. ts 这是服务页面- employee.service.ts 下面是按钮如何绑定到employee-list.component.html中的deleteClae(
对不起,如果这是一个愚蠢的问题,但我导入了一个字体存储在我的电脑到一个CSS文件,虽然它在Chrome工作,但它不在Microsoft Edge或Internet Explorer。我没有任何其他浏览器,所以我不能检查那些,我想知道是否有人会知道为什么。 当我进入sources时,这是显示的(还不让我嵌入图像,我很新):sources Linotte文件夹所在的文件夹与CSS工作表所在的文件夹在同
我在Firefox48.0中从Firefox47的新更新中得到一个错误 45000 ms后,无法在端口7055上连接到主机127.0.0.1。Firefox控制台输出:066 addons.xpi调试更新数据库,更改已安装的加载项 我的系统和浏览器配置是: Firefox 48
问题内容: 我有以下代码: 不幸的是,当被调用时,该点并没有显示,但是我仍然得到了。我尝试单独设置一个新线程,但无济于事。我尝试了其他解决方案(和),但也无济于事。 我的目标是在屏幕上设置一个绿点。你有什么解决办法吗? 问题答案: 您正在阻止Swing事件线程使应用程序进入睡眠状态。 对于简单的动画和游戏循环,请使用Swing计时器。如果需要长时间运行的代码需要在后台运行,请使用后台线程(例如Sw
问题内容: 我有一个简单的设置,可以加载“帮助”样式的窗口并将其滚动到页面上的特定点。或多或少的代码看起来像这样: 滚动的目标和软糖的值由放置在页面上的几个提示确定,我对该机制的任何部分都没有问题。在Firefox和IE8中,上述代码的工作方式与我想要的完全一样:滚动框(在本例中为页面正文)在被告知这样做时,会将包含的内容正确滚动到窗口中的正确点。 但是,在Chrome和Safari中,对scro