我厌倦了试图弄清楚如何以我想用的方式查询我的数据 - 它似乎总是推断出错误的网址来发布搜索请求?
无论如何 - 我把这个丑陋的代码放在一起似乎有效:
$("form").submit(function(){
var modal = document.getElementById('myModal');
if ( $(".required").is(":visible") && $('.required').val() == '') {
event.preventDefault();
modal.style.display = "block";
}
// When the user clicks anywhere outside of the modal, close it
window.onclick = function(event) {
if (event.target == modal) {
$('#myModal').hide();
}
}
// When the user clicks on <span> (x), close the modal
span.onclick = function() {
$('#myModal').dialog('close');
}
});
现在,在我开始使它变得更加理智和漂亮之前,查询ES是否有任何问题?
我使用Nest的问题是我无法查看查询通配符索引的方法,您可以看到我可以使用普通的旧C#
如果有人知道最后一点的答案,我将不胜感激!
答案 0 :(得分:0)
以您提出的方式查询Elasticsearch没有任何问题。 NEST支持查询通配符,单个索引,多个索引,例如
var searchResponse = client.Search<MyDocument>(s => s
.Index("usage*")
.AllTypes()
.Query(q => q
.MatchAll()
)
);
发送以下请求
POST http://localhost:9200/usage*/_search
{
"query": {
"match_all": {}
}
}
NEST的惯例是将POCO映射到索引中的类型,并且可以在DefaultMappingFor<T>(...)
ConnectionSettings
的给定POCO设置约定
var pool = new SingleNodeConnectionPool(new Uri("http://localhost:9200"));
var settings = new ConnectionSettings(pool)
.DefaultMappingFor<MyDocument>(m => m
.IndexName("usage*")
);
var client = new ElasticClient(settings);
var searchResponse = client.Search<MyDocument>(s => s
.AllTypes()
.Query(q => q
.MatchAll()
)
);
没有约定规定应该为给定的POCO省略类型名称,因此在搜索请求中仍然需要调用.AllTypes()
来搜索匹配{{1}的索引中的所有类型}。