我想知道使用must
子句和must_not
之间的性能差异。我从他们两个那里得到了不同的时间。假设我有10个组,我想让一个用户可以访问5个组,同时排除5个组。因此,我有两种使用查询的方式:
我可以在布尔查询中使用must
子句,并执行must:['1','2','3','4','5']
。我可以再次在布尔查询中使用must_not
子句,并执行must_not:['6','7','8','9','10']
。
我在这里没有提供很多细节,因为我只是想更多地了解使用这两个术语的性能差异。我在ES文档中读到了Boolean查询,它说在must_not
子句中忽略评分,尽管我还不明白在Lucene索引中是如何执行评分的。但是我发现了一些时间上的差异,must_not
比must
花费的时间更长,我很想发布关于它的消息。
注意:目前使用的Elasticsearch版本:2.4.4,目前无法升级。谁能解释一下这两个条款的区别或详细解释一下吗?对任何类型的建议和答案都持开放态度。提前谢了。
must
子句可能更有效,因为它可以利用倒排索引。
内部实现更像是
If _searched_keyword_ in inverted_hash
THEN RETRIEVE inverted_hash[_searched_keyword_ ]
must_not
成本更高,因为倒排索引没有帮助。
问题内容: 我正在计算稀疏自动编码器的算法。我已经使用和在python中实现了它。代码几乎相同,但是性能却大不相同。matlab完成任务所需的时间为0.252454秒,而numpy为0.973672151566,几乎是原来的四倍。在最小化问题中,我将在以后多次调用此代码,因此这种差异会导致实现之间的延迟几分钟。这是正常行为吗?如何提高numpy的性能? numpy实现: Sparse.rho是调整
是的,这是一个老话题,但我还是有些困惑。 在爪哇,人们说: LinkedList的插入速度比ArrayList快。这里插入是什么意思?如果这意味着向后移动一些元素,然后将元素放在中间的空点,那么ArrayList应该比LinkedList慢。如果插入只意味着添加(对象)操作,这怎么会慢呢?
我有以下格式的弹性搜索文档 } } 我的要求是,当我搜索特定字符串(string.string)时,我只想获得该字符串的FileOffSet(string.FileOffSet)。我该怎么做? 谢谢
当我执行ps-aef grep elasticsearch HeapDumpOnOutOfMemoryError时看到了这一点 501 373 47 1 0 2:29pm ttys004 0:04.14/usr/bin/Java-xms4g-xmx4g-xss256k-djava.awt.headless=true-xx:+useparnewgc-xx:+useparnewgc-xx:+usepa
我从ElasticSearch得到以下错误。 我在Ubuntu上运行Elasticsearch 1.7.2。 我做错了什么?
最大ngram 36 在速度和内存方面,这会得到真正糟糕的加班吗?有没有更好的方法来部分搜索UUID?例如,我有7e222584-0818-49b0-875b-2774f4bf939b,我希望能够使用9b0搜索它