这个问题是基于之前的帖子,其中“” Match
或“”都无法进行“精确搜索”
MatchPhrasePrefix
。
然后,我在这里找到了类似的帖子,其中在映射定义中将搜索字段设置为not_analyzed(通过@Russ Cam)。
但是我正在使用
package id="Elasticsearch.Net" version="7.6.0" targetFramework="net461"
package id="NEST" version="7.6.0" targetFramework="net461"
可能是因为该原因该解决方案无法正常工作。
因为如果我通过“ SOME”,它将与“SOME”和“SOMEOTHERLOAN”相匹配,但情况并非如此(在我先前的文章中为“ productvalue”)。
如何使用NEST 7.6.0做同样的事情?
好吧,我不知道您当前的映射看起来如何。我也不太了解NEST,但我会解释
如何使Elastic Engine理解将不分析字段以进行精确匹配?
以使用弹性dsl为例。
对于完全匹配(区分大小写),您要做的就是将字段类型定义为keyword
。对于类型为字段keyword
的数据,无需应用任何分析器即可对其进行索引,因此非常适合精确匹配。
PUT test
{
"mappings": {
"properties": {
"field1": {
"type": "keyword"
}
}
}
}
现在让索引一些文档
POST test/_doc/1
{
"field1":"SOME"
}
POST test/_doc/2
{
"field1": "SOME OTHER LOAN"
}
为了精确匹配,我们可以使用术语查询。让我们搜索“ SOME”,我们应该得到文档1。
GET test/_search
{
"query": {
"term": {
"field1": "SOME"
}
}
}
我们得到的O / P:
{
"took" : 0,
"timed_out" : false,
"_shards" : {
"total" : 1,
"successful" : 1,
"skipped" : 0,
"failed" : 0
},
"hits" : {
"total" : {
"value" : 1,
"relation" : "eq"
},
"max_score" : 0.6931472,
"hits" : [
{
"_index" : "test",
"_type" : "_doc",
"_id" : "1",
"_score" : 0.6931472,
"_source" : {
"field1" : "SOME"
}
}
]
}
}
因此,关键是使字段类型成为keyword
和使用term
查询。
问题内容: 有没有办法让ElasticSearch在分析的字段上识别完全匹配?理想情况下,我想小写,标记化,词干化,甚至对我的文档进行语音化,然后让查询提取“精确”匹配项。 我的意思是,如果我索引“汉堡包”和“汉堡包”,它们将被分析为[“汉堡包”,“小圆面包”]和[“汉堡包”]。如果我搜索“汉堡”,它将仅返回“汉堡”文档,因为这是“完全匹配”。 我尝试使用关键字标记器,但不会阻止各个标记。我是否需
问题内容: 所以我有一个字段以以下格式存储值:,例如23 / 2014、24 / 2014、12 / 2015等。 因此,如果将此字段映射为一个,则可以使用术语过滤器进行精确值搜索,如果我在该精确结构中搜索值(类似于1 / 2014、15 / 2014等),则可以正常工作,例如。 因此,使用11 /或/ 2014之类的其他内容进行搜索不会返回匹配。这可以。 但是,如果将字段定义为,则无法使用查询进
我试图检查字符串是否包含完全匹配。例如: String str="这是我的字符串,具有-Policy和-p" 我怎样才能做到以下几点:
我有一个带有标准分析器的弹性搜索集群。我知道使用这个分析仪,术语“300”被分析为一种类型。 假设我正在搜索一个具有字段“name”的文档,该字段的值为“纸巾300 CT”,分析为[“Paper”(ALPHANUM)、“tower”(ALPHANUM)、“300”(NUM)、“CT”(ALPHANUM)] 目前,当我使用模糊/通配符查询时,如下所示: 无论模糊性如何调整,模糊查询都不匹配。我希望术
我正在尝试创建一个Lucene4.10索引。我只想在索引中保存我放入文档的确切字符串,witout标记化。 我在用StandardAnalyzer。 我试图搜索术语“燃料箱容量”@en(包括引号),所以我试图省略它们,并在术语周围添加了另外几个引号,以便让lucene理解我正在搜索整个文本。 如果我打印查询,我会得到:3:“燃料箱容量en”,但我不想拆分@符号上的文本。 我认为我的第一个问题是St
我正在为如何处理这个特殊案件而挣扎。我知道我可以通过链式回调来解决这个问题,但它看起来就像是promise的海报: 我有一个父方法,它需要按顺序执行三个异步操作(特别是从用户那里得到确认)。我们称它们为func1 func2和func3。现在,我可以让每一个都返回一个promise,并将其链接起来,这一切都非常有效。我遇到的问题是: func1需要设置一个状态,等待链的其余部分运行,然后取消设置该