提问要多花一点心思哦

query_string查询多值字段问题请教

Elasticsearch | 作者 elisha | 发布于2018年03月15日 | 阅读数:7251

查询语法:{
"query_string": {
  "query": "name:南京市长",
  "default_operator": "and"
  }
}
 
其中name为多值字段,例如:
 
"name": [
南京
,
"市长"
,
"江苏"
,
"政府"
]
 
当搜索关键词为“南京市长”时,以上文档也能匹配,有没有办法实现,只有文档的name字段中某一个值完全包括搜索关键字时才能匹配,而不是name的多个值联合起来匹配
 
已邀请:

luohuanfeng

赞同来自: kennywu76 elisha zpc870921

能使用term查询么

kennywu76 - Wood

赞同来自: elisha su_san

1楼说的Term Query是正解,查询语法:
{
"query": {
"term" : { "name" : "南京市长" }
}
}

the_best

赞同来自:

你使用的auto mapping还是自己设置的mapping,能把这个字段的mapping设置截图上来吗?不然别人都不清楚你索引时是如何处理的。

elisha - 80后 IT

赞同来自:

mapping中name字段的配置如下:(采用的是ansj中文分词器)
 "name": {

"search_analyzer": "query_ansj",
"analyzer": "index_ansj",
"type": "string"

}

szk_lyh

赞同来自:

如果使用的是IK分词的话
可以在词库设置出来这个词语
然后查询的时候指定IK_SMART 分词模式 就应该能符合了

hello3521

赞同来自:

检索时设置不分词可解

要回复问题请先登录注册