如何使查询仅返回“ Projeto de Lei”? 当前查询返回“ Projeto de Lei”和各种记录,例如“ Projeto de Lei X”,“ Projeto de Lei Y”,“ Projeto de Lei XYZ”等。
{
"query" : {
"query_string" : {
"query" : "monkey AND descricaoProposicao:Projeto+de+Lei", "default_operator": "AND"
}
}
}
答案 0 :(得分:1)
有多种方法可以做到这一点:
您需要的是为您的领域使用正确的分析仪。默认情况下,Elasticsearch使用Standard Analyzer,如果您希望将整个字符串存储为原字符串,则需要确保使用Keyword Analyzer。
然后您可以使用简单的匹配查询。
POST <your_index_name>/_search
{
"query": {
"match": {
"your_field_name": "Projeto de Lei"
}
}
}
或者,Elasticsearch为您提供数据类型keyword
,该数据类型又使用了关键字分析器。
然后您可以使用Term Query。我提到的链接对此有很好的信息。
基本上,您的查询将采用以下格式,并且your_field_name
的类型为关键字
POST <your_index_name>/_search
{
"query": {
"term": {
"your_field_name": "Projeto de Lei"
}
}
}
好吧,您也可以使用match
或match_phrase
,但要确保完全匹配,请确保在类型为keyword
的字段上使用它。
POST <your_index_name>/_search
{
"query": {
"match_phrase": {
"your_field_name": "Projeto de Lei"
}
}
}
我建议为要查询的字段创建Multi-Field。
通过这种方式,您既可以使用术语查询(完全匹配的推荐方法)来进行关键字(精确)搜索,又可以在文本字段中执行基于文本的简单搜索(返回的结果将是您当前正在观察的结果) 。
希望有帮助!