这个问题真的让我很沮丧。我很长一段时间都想找到一个解决方案,但无论我在哪里试图找到人们提出的相同问题,他们要么想要一些不同的东西(比如这里或这里),要么得不到解决问题的答案(比如这里)。
我需要什么
我想知道我的搜索总共有多少命中,与所使用的查询类型无关。我说的不是您总是从ES得到的命中数,也就是为该查询找到的文档数,而是匹配我的查询的文档特征的出现次数。< br >例如,我可以有两个带有文本和文本字段“description”的文档,两个文档都包含单词< code>hero,但其中一个包含两次。< br >就像这个最小的例子:
索引映射:
PUT /sample
{
"settings": {
"index" : {
"number_of_shards" : 1,
"number_of_replicas" : 0
}
},
"mappings": {
"doc": {
"properties": {
"name": { "type": "keyword" },
"description": { "type": "text" }
}
}
}
}
两个html" target="_blank">示例文档:
POST /sample/doc
{
"name": "Jack Beauregard",
"description": "An aging hero"
}
POST /sample/doc
{
"name": "Master Splinter",
"description": "This rat is a hero, a real hero!"
}
...和查询:
POST /sample/_search
{
"query": {
"match": { "description": "hero" }
},
"_source": false
}
...这给了我:
{
"took": 2,
"timed_out": false,
"_shards": {
"total": 1,
"successful": 1,
"skipped": 0,
"failed": 0
},
"hits": {
"total": 2,
"max_score": 0.22396864,
"hits": [
{
"_index": "sample",
"_type": "doc",
"_id": "hoDsm2oB22SyyA49oDe_",
"_score": 0.22396864
},
{
"_index": "sample",
"_type": "doc",
"_id": "h4Dsm2oB22SyyA49xDf8",
"_score": 0.22227617
}
]
}
}
因此有两个命中(“total”:2
),这是正确的,因为查询匹配两个文档。但是我想知道我的查询在每个文档中匹配了多少次(或其总和),在本例中是3次,因为第二个文档包含了两次搜索词
重要信息:这只是一个简单的例子。但我希望它适用于任何类型的查询和映射,也适用于具有<code>inner_hits</code>的嵌套文档
我没想到这会如此困难,因为无论如何,这一定是ES在搜索过程中遇到的信息,对吧?我的意思是,它将文档中点击次数较多的文档排序得更高,所以为什么我不能得到这些点击次数的计数
我想把它们称为“内部命中”,但这是另一个ES功能的名称(见下文)。
我尝试过/可以尝试的(但它很丑陋)
对于任意查询,有没有一种通用的方法来实现这一点?我将非常感谢任何建议。我甚至打算通过修改排名或使用脚本字段等方式来解决这个问题。
多谢了!
由于糟糕的性能,我绝对不建议将其用于任何实际用途,但在解释API的结果中,该数据在术语频率计算中是技术上可用的。参见什么是相关性?概念解释和使用解释API。
问题内容: 我想获取与“ statusCode”不匹配的结果:200 为了匹配字段中的文本,您可以使用 我尝试过这样的事情: 根据:https : //www.elastic.co/guide/zh- CN/elasticsearch/reference/current/query-dsl-bool- query.html 问题答案: 试试这个
我希望得到与“StatusCode”不匹配的结果:200 为了匹配您使用的字段中的文本 我试过这样的方法: 根据:https://www.elastic.co/guide/en/elasticsearch/reference/current/query-dsl-bool-query.html
问题内容: 我们可以像这样在特定document.field中搜索所有单词: 这将搜索词,并在该领域,从而只返回这些文档将在所有这些词场。 但是我想做的却有些不同。 我想进行查找,以便如果该文档字段的所有单词都出现在我的搜索查询中,则它将返回该文档。 例如 假设Elasticsearch数据库中有一个文档 现在,如果我搜索“ a”,它将返回该文档,因为document.title中的所有单词确实存
问题内容: 我正在用查询查询我的elasticsearch索引。查询本身的结构与此类似 我希望能够确定所有这些查询中哪一个是与结果匹配的查询。是否有内置的elasticsearch方法允许这样做,还是我必须手动进行? 问题答案: 您可以使用命名查询,然后在结果中获得匹配的查询的名称。 然后,在结果中,您将获得一个数组,其中包含与文档匹配的查询的名称。
主要集合是零售商,其中包含用于商店的数组。每个商店都包含一系列优惠(您可以在此商店购买)。这提供了具有数组大小的数组。(见下面的例子) 现在我试图找到所有的优惠,这是在大小。 我尝试了这个查询: 我期待这样的输出: 但是,我的查询的输出还包含与XS、X和M不匹配的offer。 如何强制MongoDB只返回符合我查询的报价? 问候和感谢。
问题内容: 我是Elasticsearch的新手,正在寻找模糊查询搜索。 我用这样的对象/记录值制作了新的索引产品 现在当我在elasticsearch中执行模糊查询搜索时 它会向我返回预期的正确记录(上述产品)。 而且我知道该术语匹配,因此记录已归还。 但是从技术上讲,我怎么知道它已经匹配了。elasticsearch仅返回完整记录,像这样 是否有elasticsearch任何方式,这样我可以知