当前位置: 首页 > 知识库问答 >
问题:

弹性搜索:与分析器匹配查询不起作用

索锐藻
2023-03-14

我的目标是搜索一个词,而不管添加了什么分析器。

我使用了匹配查询与关键字分析器,但我认为它可以与添加到该属性中的默认分析器一起工作。

在弹性搜索中,我的作者文档结构如下所示

"_source": {
               "Id": 3,
               "Organization": "let123"
            }
 createIndexDescriptor.NumberOfReplicas(1)
                .NumberOfShards(1)
                .Settings(
                    settings =>
                    settings
                        .Add("analysis.filter.autocomplete_filter_ngram.type", "edge_ngram")
                        .Add("analysis.filter.autocomplete_filter_ngram.min_gram", "2")
                        .Add("analysis.filter.autocomplete_filter_ngram.max_gram", "7")
                        .Add("analysis.analyzer.title_analyzer.type", "custom")
                        .Add("analysis.analyzer.title_analyzer.char_filter.0", "html_strip")
                        .Add("analysis.analyzer.title_analyzer.tokenizer", "standard")
                        .Add("analysis.analyzer.title_analyzer.filter.0", "lowercase")
                        .Add("analysis.analyzer.title_analyzer.filter.1", "asciifolding")
                        .Add("analysis.analyzer.title_analyzer.filter.2", "autocomplete_filter_ngram"))
                .AddMapping<Author>(
                    m =>
                    m.MapFromAttributes()
                        .AllField(f => f.Enabled(true))
                        .Properties(
                            props =>
                            props.MultiField(
                                mf =>
                                mf.Name(t => t.Organization)
                                    .Fields(fs => fs.String(s => s.Name(t => t.Organization).Analyzer("title_analyzer"))
                                          ))));
GET /author/_search {
    "query": {
        "match": {
           "Organization": {
               "query": "le",
               "analyzer": "keyword"
           }
        }
    } }

共有1个答案

凌鹏程
2023-03-14

通过指定查询中的分析器,您可以指示Elasticsearch如何分析发送的查询。

例如:

GET /author/_search
  {
    "query": {
        "match": {
           "Organization": {
               "query": "le",
               "analyzer": "keyword"
           }
        }
     }
  }

告诉Elasticsearch对le字符串使用关键字分析器。它不会影响已在存储数据上创建的索引术语(let123)

{
  "tweet" : {
    "properties" : {
      "name" : {
        "type" : "string",
        "index" : "analyzed",
        "fields" : {
          "raw" : {"type" : "string", "index" : "not_analyzed"}
        }
      }
    }
  }
}
 类似资料:
  • 我正在尝试使用C#使用Nest进行匹配查询。Match查询不会返回任何结果,因为生成的JSON的语法似乎不正确,我确信有一些文档包含此关键字。下面是C代码片段 这将生成以下查询: 但是,当我在Kibana控制台Get\u search中调整同一查询时,该查询返回0个结果 我得到搜索词的结果。请注意,Kibana查询的语法中缺少“第二个查询标记”。 我确实检查了文档,似乎我的语法是正确的https:

  • 问题内容: 我的目标是搜索单词,而不考虑添加到其中的分析器。 我将 匹配 查询与 关键字分析器一起使用, 但我认为它可以与添加到该属性的默认分析器一起使用。 在elasticsearch中,我的作者文档结构像 索引映射: 在这里,我注意到我的标题分析器过滤器之一是 ngram 但是我在匹配查询中使用了 关键字分析器 ,以避免搜索过程中自动完成。 但是当我搜索时,上面的文件是匹配的。我期望的是组织具

  • 匹配查询用于实现以下情况的映射是什么 不区分大小写的搜索 数字搜索 特殊字符搜索 单字符搜索 > 我尝试使用通配符,但id不支持区分大小写 尝试使用小写规范化器匹配查询,它不支持特殊字符和单字符搜索 已尝试使用 ngram 匹配查询,但它不支持特殊字符和数字搜索。 任何人都可以帮助我的映射来支持上面提到的所有情况,无论是类型还是类型都很好

  • 我希望与字段中的字符串完全匹配,然后返回一天,提取所有此类记录。我所使用的json似乎也与简单的单词相匹配。我不确定我哪里出了问题。我需要向这个查询JSON添加吗?我目前拥有的JSON如下所示:

  • 我已经完成了名称索引。它包含椅子、椅子等数据。 当我尝试用“cha”搜索时,它不会返回任何椅子。这是返回“毛毯”,我期待的文件有椅子。 下面是我的代码: 搜索请求: 搜索响应: } 映射: 我该怎么解决这个问题? 谢谢,Sri

  • 我正在LDAP服务器上工作。它有弹性搜索。我必须用一些Javascript代码(JSON格式)发送查询。 这是我的查询: 我试图打印所有结果,其中“server”=“server\u name”(该字段是server:server\u name…)。我认为关于弹性搜索的文档太小了。我找到了一些文档,但都是一样的,对新用户没有帮助。这个例子太简单了。 此查询返回所有结果,包括任何筛选器。 Ps:这就