当前位置: 首页 > 面试题库 >

如何使用ElasticSearch在字符串字段中搜索确切短语?

夹谷烨赫
2023-03-14
问题内容

我想在文档中搜索“社交网络营销”。全部一起。但是我继续得到结果,单词分开。我有以下DSL查询:

{
    "fields": ["title"], 
    "query": {
        "bool": {
            "should": [{
                "match": {
                    "title": "SEO"
                }
            }],
            "must": [{
                "match": {
                    "content": {
                        "query": "Marketing in social networks",
                        "operator": "and"
                    }
                }
            }]
        }
    }
}

我没有包含此短语和标题的文档,但是我也得到了包含短语单词的搜索结果(文档)以进行拆分。我要严格搜索。如果没有任何文档使用此短语,则不要检索任何文档或仅检索具有该标题的文档。为什么
运算符又 不起作用?


问题答案:

您可以使用类型词组尝试以下方法吗?看到这里说,

查询首先分析查询字符串以生成术语列表。然后,它搜索所有术语,但仅将包含所有搜索术语的文档相对于彼此放置在相同的位置

{
    "fields": ["title"], 
    "query": {
        "bool": {
            "should": [{
                "match": {
                    "title": "SEO"
                }
            }],
            "must": [{
                "match": {
                    "content": {
                        "query": "Marketing in social networks",
                        "type":  "phrase"
                    }
                }
            }]
        }
    }
}

PS:我还没有尝试过。



 类似资料:
  • 问题内容: 我正在尝试在mysql中搜索字符串的完全匹配。字符串为“ nrew”。但是当我执行下面的查询时,我仍然得到结果: 请帮忙。 问题答案:

  • 问题内容: Elasticsearch版本:7.1.1 嗨,我做了很多尝试,但是在索引中找不到任何解决方案,我有一个包含字符串的字段。 因此,例如,我有两个文档,它们在locations数组中包含不同的值。 文件1: 文件2: 用户请求搜索术语 克洛彭堡, 而我只想返回那些包含术语 克洛彭堡 而不是 Landkreis Cloppenburg的 文档。结果应仅包含 Document-1 。但是我的

  • 问题内容: 我在Elasticsearch中放了2个文档: 为什么此查询返回2个文档: 而这个,只有第二个文件: 我想elasticsearch以匹配我传递给查询参数的确切词组(带空格),该怎么做? 问题答案: 您需要查看的是正在使用的分析仪。如果您未指定,Elasticsearch将使用标准分析器。在大多数使用纯文本输入的情况下,它非常有用,但不适用于您提到的用例。 标准分析器将执行的操作是将字

  • 问题内容: 在Elasticsearch中,如何搜索任意子字符串,也许包括空格?(仅搜索单词的一部分是不够的;我想搜索整个字段的任何子字符串。) 我想它必须在一个字段中,而不是一个字段中。 假设我的Elasticsearch索引中只有几千个文档,然后尝试: 可以按预期工作,我得到了描述中“计划”所在的每个项目,甚至是“替代”项目。 现在,我想做 …以便在许多其他可能性中将文件与“ Kaplan不是

  • 我现在从Elasticsearch开始。我为一些EDIFACT消息(一种史前数据格式;-)编制了索引,内容如下: 当我搜索短语UNH 66304 CODECO: D:95B时,它应该只返回一次命中,但它似乎返回了包含任何这些单词的所有文件(并且UNH在每个文档中)。我的查询是: 我尝试添加“and”操作符,如下所示: 但是没有返回结果。我在这里读到了建议:搜索需要使用双引号的确切短语。我试过“查询

  • 我有一个elasticsearch索引,其中包含具有以下字段的用户:.“名称”:“凯”“年龄”:“23”“位置”:“德里,印度”“标签”:[“搜索”,“nosql”]等。 我想在用户的所有字段中查询多个字符串(例如:[“nosql”、“德里”)。可以使用Java API吗? 这是我正在使用的代码示例。(但与问题无关)这只是为了了解我现在使用的对象。 感谢提前。:)