我曾经这样搜索: curl -XGET localhost:9200/users/_search
但用户包含这样的用户a,b,c: curl -XGET localhost:9200/users/a,b,c/_search
users
是第一个索引,a/b/c
是类型。
如何a
在此查询中增加类型?最好加上示例代码,谢谢。
您可以使用术语查询来增强索引类型。
首先创建一些测试数据(e1,e2,e3是类型,而test是索引名称):
PUT test/e1/1
{
"subject": "subject 1"
}
PUT test/e2/1
{
"subject": "subject 1"
}
PUT test/e3/1
{
"subject": "subject 1"
}
现在将术语查询与按类型自定义增强一起使用:
GET test/_search
{
"query": {
"bool": {
"should": [
{
"query_string": {
"query": "subject"
}
},
{ "term" : { "_type" : {"value" : "e3", "boost" : 2.0} } },
{ "term" : { "_type" : {"value" : "e2", "boost" : 3.0} } }
]
}
}
}
它将产生如下结果:
{
"took": 1,
"timed_out": false,
"_shards": {
"total": 1,
"successful": 1,
"failed": 0
},
"hits": {
"total": 3,
"max_score": 0.7671045,
"hits": [
{
"_index": "test",
"_type": "e2",
"_id": "1",
"_score": 0.7671045,
"_source": {
"subject": "subject 1"
}
},
{
"_index": "test",
"_type": "e3",
"_id": "1",
"_score": 0.59740055,
"_source": {
"subject": "subject 1"
}
},
{
"_index": "test",
"_type": "e1",
"_id": "1",
"_score": 0.1289963,
"_source": {
"subject": "subject 1"
}
}
]
}
}
问题内容: 我有三个食物类型索引:“意大利”,“西班牙”,“美国”。当用户搜索“奶酪”时,“意大利”文档似乎出现在顶部。如果我偏爱说“西班牙语”,是否可以“增强”结果?(我仍然应该获得意大利语的结果,但是基于索引类型“ Spanish”的一些数值提升值,结果中返回的文档的顺序将优先使用“ Spanish”索引。在用户输入的lucene和/或ES查询? 问题答案: 添加带有字词查询或字段(或两者都有
问题内容: 我使用了官方的elasticsearch docker镜像,想知道在构建自定义索引时如何也可以包括在内,以便在启动容器时该索引已经存在。 我的尝试是将以下行添加到我的dockerfile中: 我收到以下错误: 我可以在构建过程中通过这样的API调用到达elasticsearch还是有完全不同的方法来实现这一点? 问题答案: 我有类似的问题。 我想创建一个预加载数据的docker容器(通
问题内容: 我有两个必须分开的索引: 我将如何在搜索中“联接”这两个表,以使其返回以下内容: 问题答案: 正如您在其他问题中回答的那样,没有什么可以阻止您在建立索引时将名称存储在每个文档中,同时仍然具有包含数据的专用索引。请记住,这都是关于巧妙地对数据进行规范化,以便每个文档都可以根据需要实现“自包含”。 该解决方案的优点是每个订单商品都是完全独立的,您可以对其进行分组/汇总以获取给定订单的所有商
问题内容: 我已经设置了索引。我不时向其推送新文档。 我只想在所有文档都编入索引后回答我的查询。我怎样才能做到这一点? 问题答案: 在ES 2中,您可以在为新文档建立索引后立即调用API,但是不建议在生产环境中使用它,因为这可能会降低群集的性能。 在ES5中,您将能够使用发送索引查询,并且ES仅在准备好搜索新文档时才响应。
按照文档的规范示例,假设我想在elasticsearch中存储推文,但我想指定一个处理两个以上字段的endpoint,例如。 在本例中,我想在推特上建立索引,但也要在推特句柄和月份上建立索引,包括推特类型和id。 这是可能的,还是唯一可能的映射类似于他们提供的东西,一个和一个,例如?
问题内容: 我的 单元/集成测试 包括搜索功能的测试。 我的想法是在每次测试之前有一个空的搜索索引。因此,我正在尝试删除方法(它是Groovy代码)的索引中的所有元素: 似乎它正在异步处理所有删除操作,因此在它之后添加了它。如您所见,我尝试几次打开/关闭连接-在那里没有帮助。 这个问题有时需要更多时间,有时需要5秒钟以上才能删除,有时无法找到刚刚添加的数据(来自先前的测试),等等。而最令人烦恼的是