我正在使用elasticsearch从json字段进行精确短语匹配。我尝试过多种语法,比如multi_match、query_string
query_string我正在使用的语法;
"query":{
"query_string":{
"fields":[
"json.*"
],
"query":"\"legal advisor\"",
"default_operator":"OR"
}
}
}
我也尝试了过滤器而不是查询,但是过滤器在json上没有给出任何结果。我用于过滤器的语法是;
"query": {
"bool": {
"filter": {
"match": {
"json": "legal advisor"
}
}
}
}
}
现在的问题是;
是否可以使用elasticsearch对json执行精确匹配操作?
由于您没有提供示例文档和预期文档,我假设您正在寻找短语匹配,添加一个工作示例。
索引示例文档,该文档还将生成索引映射
{
"title" : "legal advisor"
}
{
"title" : "legal expert advisor"
}
现在,如果你正在寻找法律顾问
的准确短语搜索,请使用下面的查询
{
"query": {
"match_phrase": {
"title": "legal advisor"
}
}
}
只返回第一个文档
"hits": [
{
"_index": "64989158",
"_type": "_doc",
"_id": "1",
"_score": 0.5753642,
"_source": {
"title": "legal advisor"
}
}
]
您可以尝试对类型短语使用多匹配查询
{
"query": {
"multi_match": {
"query": "legal advisor",
"fields": [
"json.*"
],
"type": "phrase"
}
}
}
本文向大家介绍MongoDB精确数组匹配,包括了MongoDB精确数组匹配的使用技巧和注意事项,需要的朋友参考一下 对于精确的数组匹配,只需在MongoDB中使用。让我们创建一个包含文档的集合- 在方法的帮助下显示集合中的所有文档- 这将产生以下输出- 这是对MongoDB数组匹配的查询- 这将产生以下输出-
我正在尝试创建一个Lucene4.10索引。我只想在索引中保存我放入文档的确切字符串,witout标记化。 我在用StandardAnalyzer。 我试图搜索术语“燃料箱容量”@en(包括引号),所以我试图省略它们,并在术语周围添加了另外几个引号,以便让lucene理解我正在搜索整个文本。 如果我打印查询,我会得到:3:“燃料箱容量en”,但我不想拆分@符号上的文本。 我认为我的第一个问题是St
我目前正在Java应用程序上使用MongoDB的驱动程序。假设我将以下两个文档存储在一个集合中: 文件A: 文件B: 现在,我想通过使用key1和key2的值从集合中检索DocumentB的精确匹配,而不返回documenta,而不是_id,因为我事先不知道它。 如果我只是使用DocumentB作为查询(没有_id),Mongo也将返回DocumentA,因为它匹配所有的键和值,不考虑Docume
问题内容: 我想在查询上使用模糊匹配,但在结果顶部显示完全匹配。 我已经尝试了以下方法。 由于格式错误的查询错误,此方法不起作用。 有任何想法吗? 问题答案: 我最终没有使用模糊匹配来解决我的问题,而是使用了ngram。 结果正是我想要的。它根据搜索查询中包含的ngram部分构造匹配项。
问题内容: 我有一个简单的RegEx,它应该查找8位数字: 但事实证明,它还匹配9位及更多数字。如何修复此RegEx以精确匹配8位数字? 例如:应匹配12345678,而不应匹配1234567和123456789。 问题答案: 试试这个: 被称为单词边界,它将对您的正则表达式说数字在8之后结束
问题内容: 我想在一个字段中搜索“ vision”项目,但是通过在DSL中使用match / match_phrace / term,我只得到了“ vision A”,“ vision B”,“ xx版本”,“ vision”等结果。 我想要的是精确匹配“视觉”应该获得最高分,而包含“视觉”的项目应该排在精确匹配之后。排名应该是: 我检查了Elasticsearch匹配精确术语其中识别出将“索引”