elasticsearch,Java,elasticsearch" /> elasticsearch,Java,elasticsearch" />

ElasticSearch嵌套字段中文本的精确匹配-Java

ElasticSearch嵌套字段中文本的精确匹配-Java,java,elasticsearch,Java,elasticsearch,映射包含嵌套字段 我想知道是否有可能在不将其类型更改为“关键字”的情况下对“value”进行精确匹配 下面是我试图对“value”字段进行精确匹配的代码 上面返回的结果也与标记化的单词“value”匹配 如果有任何与此问题相关的参考资料,我将不胜感激。基本上,您正在寻找“术语查询”,它返回“在提供的字段中包含确切术语的文档” 以下是相同的参考: 您可以使用术语查询,它返回在提供的字段中包含确切术语的文档 { "query":{

映射包含嵌套字段

我想知道是否有可能在不将其类型更改为“关键字”的情况下对“value”进行精确匹配

下面是我试图对“value”字段进行精确匹配的代码

上面返回的结果也与标记化的单词“value”匹配


如果有任何与此问题相关的参考资料,我将不胜感激。

基本上,您正在寻找“术语查询”,它返回“在提供的字段中包含确切术语的文档”

以下是相同的参考:

您可以使用
术语查询
,它返回在提供的字段中包含确切术语的文档

    {
        "query":{
            "term":{
                "value":"your input"
            }
        }
    }
如需更多参考,请访问以下网站:,

由于
标记.value
类型为
文本
,因此对其内容进行了分析,并在Elasticsearch中对生成的标记(即非精确值)进行了索引

即使
术语
查询没有分析搜索标记,但在这里也没有帮助,因为已经分析了索引标记

现在有两种选择:

A.如果
tag.value
仅包含一个标记(例如
“Dog”
),您仍然可以使用
术语或
匹配来精确匹配它们,但可以通过将值小写来匹配,如:

{
    "nested": {
       "path": "tag",
       "query":{
           "term":{
               "tag.value":"dog"
           }
       }
    }
}

B.如果
标记.value
包含多个标记(例如
“大狗”
),则无法再搜索它们的确切值。

在文档中,说明
避免使用文本字段的术语查询
,这是有意义的,因为文本字段的值已在索引时进行了分析。
术语
查询将不会分析作为搜索输入的术语,但无法更改字段值分析和索引到Elasticsearch中的方式。在文档中,说明要
避免对文本字段使用术语查询
,这是有意义的,因为文本字段的值已在索引时进行了分析。
term
查询将不会分析作为搜索输入的术语,但无法更改字段值分析和索引到Elasticsearch的方式。
    {
        "query":{
            "term":{
                "value":"your input"
            }
        }
    }
{
    "nested": {
       "path": "tag",
       "query":{
           "term":{
               "tag.value":"dog"
           }
       }
    }
}