我在嵌套文档上合并term,must_not查询时遇到了困难。
Sense示例可以在这里找到:http://Sense.qbox.io/gist/be436a1ffa01e4630a964f48b2d5b3a1ef5fa176
下面是我的映射:
{
"mappings": {
"docs" : {
"properties": {
"tags" : {
"type": "nested",
"properties" : {
"type": {
"type": "string",
"index": "not_analyzed"
}
}
},
"label" : {
"type": "string"
}
}
}
}
}
该索引中有两个文档:
{
"tags" : [
{"type" : "POST"},
{"type" : "DELETE"}
],
"label" : "item 1"
},
{
"tags" : [
{"type" : "POST"}
],
"label" : "item 2"
}
{
"query": {
"nested": {
"path": "tags",
"query": {
"bool": {
"must": {
"term": {
"tags.type": "DELETE"
}
}
}
}
}
}
}
{
"query": {
"nested": {
"path": "tags",
"query": {
"bool": {
"must_not": {
"term": {
"tags.type": "delete"
}
}
}
}
}
}
}
你能给我一些解决这个问题的线索吗?
谢谢。
最初的查询将搜索每个嵌套对象,并消除不匹配的对象,但如果还剩下一些嵌套对象,它们确实与查询匹配,因此您将获得结果。这是因为嵌套对象作为一个隐藏的独立文档进行索引
原代码:
{
"query": {
"nested": {
"path": "tags",
"query": {
"bool": {
"must_not": {
"term": {
"tags.type": "delete"
}
}
}
}
}
}
}
实际上,解决方案非常简单,您应该将bool查询带到嵌套文档之外。现在,所有具有“delete”类型嵌套对象的文档都被丢弃了。正是你想要的!
解决方案:
{
"query": {
"bool": {
"must_not": {
"nested": {
"path": "tags",
"query": {
"term": {
"tags.type": "DELETE"
}
}
}
}
}
}
}
注意:您的字符串是“未分析”,您搜索的是“删除”而不是“删除”。如果要搜索不区分大小写,请对字符串进行分析
我是elasticsearch的新手,对如何进行过滤器、查询和聚合有一些想法,但不确定如何解决下面的问题。我希望能够从下面显示的文档中只查询公司的最新交付(日期和crate_quantity)。我不确定如何去做。有没有办法使用最大聚合从每个文档中只提取最近的交付?
另外,类型中的所有文档都存储了上面提到的community的值。感谢帮助。
问题内容: 我想使用ES进行图书搜索。因此,我决定将作者姓名和标题(作为嵌套文档)放入索引,如下所示: 我不明白的是:如何构造搜索查询,以便在搜索“一二”时仅找到第二本书,而在搜索“二三”时什么也找不到,而在搜索“一”时所有图书呢? 问题答案: 也许是这样的? 该查询基本上说一个文件必须有and 。您可以轻松地重新配置该查询。例如,如果您只想搜索作者,请删除嵌套部分。如果您想要另一本书,请更改嵌套
我是Elasticsearch的新手,如果我问的问题非常简单直接,我会道歉。 我使用以下学生教育细节的映射, 我的数据集中有近15000名学生。文件示例: 我的问题是,我正在尝试做一个简单的查询,以显示那些拥有“BE”学位的学生。但我希望目前拥有BE(工程学士)学位的学生的排名高于同样拥有硕士和博士学位的学生。 从我的例子中,如果我查询“BE”,学生3应该比学生2排名更高。我应该能够根据"endD
如果我有文件: 我想用“红棕色黄”查询,得到文档1。 我怎么能这么做?反过来很容易...
问题内容: 我在获取与Elasticsearch一起使用的嵌套查询时遇到问题(如果我删除了查询字符串之一,则可以使用)。我要解决的问题是我有一个包含关闭列表的文档(关闭)。我想在条件满足另一个值的闭包列表中搜索一个值。那只是从argan = 1的闭包中获得价值 我正在得到这个错误响应; 我的映射如下所示。 有人知道我在做什么错吗? 问题答案: 您的查询不是有效的查询。您需要使用适当的复合查询将其他