我想查询的数据user_id
是'1'
和name
是'John'
。编写常用的SQL很容易:
select * from t where user_id = '1' and name = 'John';
但是,对Elasticsearch进行查询对我来说并不容易。
首先,我查询了user_id
:
{
"query" : {
"match" : {
"user_id" : "1"
}
}
}
结果是我所期望的。
然后,我查询了name
:
{
"query" : {
"match" : {
"name" : "John"
}
}
}
它也运作良好。
但是我无法使用和操作将2个条件连接在一起的查询。如何将这两个匹配查询合并为一个使用和操作?
您需要的是布尔查询,您可以在其中输入所有单个查询:
(我无法测试查询,这可能是错误的,但是bool-query是您问题的答案)
{
"bool" : {
"must" : [{
"match" : {
"user_id" : "1"
},
"match" : {
"name" : "John"
}
}]
}
}
我是Elasticsearch新手,对匹配查询的工作方式感到困惑。我有以下映射: 我批量导入了以下文档 我验证了所有文档都已成功加载。然后我执行匹配查询: 它只返回#1文档。我在这里感到困惑。为什么它不返回所有三个文档?我应该使用什么查询来返回这三个文档,因为它们在字段中都有“quiet”根单词? 谢谢和问候。
问题内容: 我正在用查询查询我的elasticsearch索引。查询本身的结构与此类似 我希望能够确定所有这些查询中哪一个是与结果匹配的查询。是否有内置的elasticsearch方法允许这样做,还是我必须手动进行? 问题答案: 您可以使用命名查询,然后在结果中获得匹配的查询的名称。 然后,在结果中,您将获得一个数组,其中包含与文档匹配的查询的名称。
问题内容: 假设我们有两种索引类型:成员和餐厅。两者都包含城市属性。 我想过滤成员(例如按名称),并希望在结果中包括成员所在城市/城市的餐馆名称列表。 是否可以仅使用一个ES查询来执行此操作?我猜它应该类似于数据库联接。 谢谢。 问题答案: ES没有联接的概念。这是因为它是索引而不是关系数据库。最好打两个电话。一个获取会员的文件,然后另一个获取餐厅。 除非您有特殊情况,否则这仍然应该非常有效。
问题内容: 我有以下 匹配 查询字符串: 我想它的意思是,但实际上它能执行。 然后我尝试了 术语 查询字符串: 它执行,显示 术语 查询通过数组支持多个OR条件。 我很好奇为什么 匹配 查询不支持通过数组的 OR 条件?并且它不显示任何语法错误。 问题答案: 该查询仅支持要指定的单个字符串值。官方文档中没有明确指定它,但是如果您愿意阅读的源代码,则可以看到,在解析字段时,解析器将跳过标记来分隔数组
问题内容: 有什么办法(查询)在ElasticSearch中加入以下2个JSON 以上2种JSON在Logstash中以2种不同类型处理(输入),因此它们的索引在Elasticsearch中归档的不同“类型”中可用。 我想要的是在product_id字段上加入2个JSON。 问题答案: 当您说加入时,这取决于您的打算。Elasticsearch与支持表之间的JOIN的常规数据库不同。它是一个文本搜
问题内容: 我必须找到具有字符串的匹配文档,例如:在某些“键”范围内的字符串:“ sky”。当我编写单独的匹配和范围查询时,我从ES中获得了输出,但是合并在一起时会抛出异常。 范围查询: 匹配查询: 组合查询: 组合查询在执行时会引发错误: 引发HTTP_EXCEPTIONS.get(状态码,TransportError)(状态码,error_message,Additional_info)ela