elasticsearch,在字段中找到确切的短语
elasticsearch, find exact phrase in a field
我想在单个字段中搜索确切的短语..这是我的方法:
"query": {
"match_phrase": {
"word": "developer"
}
}
但要点是此查询将查找任何包含此关键字的文档 developer
:
喜欢"word": "developer"
和"word": "php developer"
如何创建查询,当我搜索 developer
时,只需 return "word": "developer
" doc,
当我搜索 php developer
return "word": "php developer"
doc
谢谢
简单来说,如果您的字段 word
是 keyword
类型,您就可以使用 Term Query,如下所示:
POST <your_index_name>/_search
{
"query": {
"term" : { "word" : "developer" }
}
}
如果您只有 word
类型 text
,我建议您将其 keyword
字段添加为 multi-fields,这样您就可以使用word
用于文本匹配,word.keyword
用于精确匹配。
PUT <your_index_name>
{
"mappings": {
"_doc": {
"properties": {
"word": {
"type": "text",
"fields": {
"keyword": {
"type": "keyword"
}
}
}
}
}
}
}
我想在单个字段中搜索确切的短语..这是我的方法:
"query": {
"match_phrase": {
"word": "developer"
}
}
但要点是此查询将查找任何包含此关键字的文档 developer
:
喜欢"word": "developer"
和"word": "php developer"
如何创建查询,当我搜索 developer
时,只需 return "word": "developer
" doc,
当我搜索 php developer
return "word": "php developer"
doc
谢谢
简单来说,如果您的字段 word
是 keyword
类型,您就可以使用 Term Query,如下所示:
POST <your_index_name>/_search
{
"query": {
"term" : { "word" : "developer" }
}
}
如果您只有 word
类型 text
,我建议您将其 keyword
字段添加为 multi-fields,这样您就可以使用word
用于文本匹配,word.keyword
用于精确匹配。
PUT <your_index_name>
{
"mappings": {
"_doc": {
"properties": {
"word": {
"type": "text",
"fields": {
"keyword": {
"type": "keyword"
}
}
}
}
}
}
}