我认为是许多使用弹性搜索的用例。这是我的模板
PUT _template/test
{
"template" : "test*",
"settings" : {
"number_of_shards" : 5,
"number_of_replicas" : 1
},
"mappings" : {
"test": {
"properties": {
"name": {
"type": "string",
"index": "analyzed"
},
"description": {
"type": "string",
"index": "analyzed",
"analyzer":"english",
"fields": {
"raw": {
"type": "string",
"index": "not_analyzed"
}
}
}
}
}
}
}
现在我要在索引中放一条记录
POST /test/test
{
"name":"test-1",
"description":"on the first day of christmas my true love gave to me a partridge in a pear tree"
}
现在想象我有一百万条记录。我想要做的是,如果我在描述字段中搜索on the
,我不想回来,因为这些是英语分析器应该处理的常用词。但是,如果我搜索确切的文本"on the"
,那么我希望文档返回与确切文本匹配的文档。
我对弹性社区的问题是我如何允许这个以及查询应该是什么样的?我添加了.raw字段用于描述,但无论我的查询字符串是什么,我都无法获得确切的文本以返回任何结果。
答案 0 :(得分:0)
英语分析仪已满足您的第一个要求。现在来到第二个问题,如果"在"通过你想要获得完整匹配的文件。如果出现第二个问题,应在"描述中进行搜索。生"领域。标记你的领域" raw":{ "输入":" string", "索引":"分析" 这里默认的分析器是标准的,所以你将获得整个文档,其中“on”或“the”或“on”匹配,但如果你想匹配包含"的确切文档,请在“word配置新的自定义分析器” for" description.raw"使用“edge ngram”标记生成器的字段。 更多细节可以在下面的链接中找到 https://www.elastic.co/guide/en/elasticsearch/guide/current/_index_time_search_as_you_type.html