术语查询不使用';不能给出正确的结果

术语查询不使用';不能给出正确的结果,
Warning: implode(): Invalid arguments passed in /data/phpspider/zhask/webroot/tpl/detail.html on line 45
,,映射 "isValid" : { "type" : "boolean" }, "lName" : { "type" : "text" }, "mname" : { "type" : "keyword" } 数据 "isValid" : true "lName" : "John scena", "mname" : "p

映射

      "isValid" : {
        "type" : "boolean"
      },
      "lName" : {
        "type" : "text"
      },
      "mname" : {
        "type" : "keyword"
      }
数据

          "isValid" : true
          "lName" : "John scena",
          "mname" : "prod"
查询(匹配)

它没有给我任何结果,但是

这给了我正确的结果

查询(术语)

这也不会给出任何回应

我的问题是:

  • 为什么会这样?请给出正确的解决方案
  • “术语”、“匹配”、“匹配短语”查询之间有什么不同
  • “关键字”、“文本”、“字符串”之间有什么不同?它影响到 询问
  • 什么是日期数据类型格式?我们可以用什么格式保存数据 类型

  • TIA。

    lName
    必须是
    关键字
    类型,才能使您的
    术语
    查询匹配。如果它是
    文本
    ,则将对其进行分析,从而将其拆分为多个术语

    term
    查询将与您给它的文本完全匹配

    解决方案是将映射更改为:

      "lName" : {
        "type" : "text"
      }
    
    “术语”、“匹配”、“匹配短语”查询之间有什么不同

    这两者之间最大的区别在于
    术语
    不分析作为搜索文本接收的文本,而其他两个将进行分析

    “关键字”、“文本”、“字符串”之间有什么不同?它对查询有什么影响

    文本
    以及与
    索引一起使用的
    字符串
    :“分析的”
    (或默认值)将在索引时分析文本,并可能将文档中的文本拆分为多个术语。
    关键字
    或带有
    索引的
    字符串
    :“未分析”
    选项在索引时不会触及文本,并且对于单个文档,该值只有一个术语被索引

    你的问题都是基本的,文档很好地涵盖了这些问题。我强烈建议查阅以下文件:

    在elasticsearch中,文档被反向索引。对于反向索引,我们需要正确分割字符串。为此,我们在弹性搜索中使用了分析器。因此,默认情况下,在索引时,它会将“john scena”拆分为“john”和“scena”,它们将指向同一个文档。因此,您试图索引“john scena”,但它被索引为“john”,“scena”。您可以通过创建自定义分析仪来更改分析仪的行为

    现在每个索引都有搜索分析器,它说明了在搜索时应该如何分析搜索词。默认情况下,它与索引时间分析器具有相同的值。当我们进行术语查询时,它说不要分析我的搜索术语。而match说在搜索之前先分析我。当您索引“john scena”时,它会被索引为“john”,“scena”。如果您试图使用“john scena”进行术语查询,则它将不匹配。因为术语查询停止了ES对“john scena”的分析,所以它会寻找精确匹配。但是索引的值是“john”、“scena”。所以你不会得到任何匹配。在匹配查询中,您的搜索词也被分为“john”和“scena”,您会得到匹配结果。有关更多详细信息,请参阅文档,其中有很好的示例


    在ES 5中,默认情况下,关键字字段具有精确的值。如果您确切知道要搜索的内容,可以使用术语查询。但是要小心,因为“精确”意味着“精确”,即使大小写差异也会导致找不到匹配项。

    @Val请帮助我,如果可能,请给出答案!您的
    术语
    查询在哪里?我们只能看到匹配查询。你也可以分享术语查询吗?@avr我忘了在这里提到,我有编辑que。我知道术语查询会完全匹配,但为什么它不会发生在我的案例中?因为,正如我在回答中所说,
    lName
    需要是
    关键字
    而不是
    文本。但是为什么呢?请参阅我在问题末尾提到的问题。更新了我的答复。正如我在最后一段中所说的,你真的需要检查一下文档。他们比我更善于解释这些基本问题。祝你好运谢谢你的尝试@andrestefan谢谢@krrish@DivyeshGausvami :)
    
       {
            "query": {
                "match" : {
                    "mname" : "prod"
                }
            }
        }
    
    {
       "query":{
          "term":{"lName":"John scena"}
       }
    }
    
      "lName" : {
        "type" : "text"
      }