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