Elasticsearch - 如何在 json 文档中搜索与特殊字符 (-) 完全匹配的字符串
Elasticsearch - how to search exact string match with special charater (-) in the json document
我一直在使用 ES 5.x 版本,这是我的示例数据集 json。
{"id":"1"}
{.... "company" : "HCL-US",....}
{"id":"2"}
{.... "company" : "HCL",....}
{"id":"3"}
{.... "company" : "HCL-IND",....}
{"id":"4"}
{.... "company" : "HCL-AUS",....}
我如何搜索并获得谁属于 "HCL-US"。我尝试使用此查询“_search?q=company:"HCL-US"”,它返回 HCL * 结果。我怎样才能将精确的字符串与特殊字符串匹配。
1/ 您可以在 company
字段的映射中指定一个 whitespace analyzer。该分析器将仅在空格上拆分查询,而标准将在非字母数字字符上拆分。
标准分析器是在未定义分析器时使用的分析器。
2/ 或者您可以查询 company.keyword
,这是自 5.X 以来自动为文本字段创建的字段。此关键字未被分析,您可以安全地对其使用术语查询来进行精确匹配。
您可以使用 Term Query
来匹配确切的字词。假设 company
是一个 text
字段,您将得到相同的 keyword
版本,下面的查询应该做必要的
{
"query": {
"term": {
"company.keyword": {
"value": "HCL-US"
}
}
}
}
我一直在使用 ES 5.x 版本,这是我的示例数据集 json。
{"id":"1"}
{.... "company" : "HCL-US",....}
{"id":"2"}
{.... "company" : "HCL",....}
{"id":"3"}
{.... "company" : "HCL-IND",....}
{"id":"4"}
{.... "company" : "HCL-AUS",....}
我如何搜索并获得谁属于 "HCL-US"。我尝试使用此查询“_search?q=company:"HCL-US"”,它返回 HCL * 结果。我怎样才能将精确的字符串与特殊字符串匹配。
1/ 您可以在 company
字段的映射中指定一个 whitespace analyzer。该分析器将仅在空格上拆分查询,而标准将在非字母数字字符上拆分。
标准分析器是在未定义分析器时使用的分析器。
2/ 或者您可以查询 company.keyword
,这是自 5.X 以来自动为文本字段创建的字段。此关键字未被分析,您可以安全地对其使用术语查询来进行精确匹配。
您可以使用 Term Query
来匹配确切的字词。假设 company
是一个 text
字段,您将得到相同的 keyword
版本,下面的查询应该做必要的
{
"query": {
"term": {
"company.keyword": {
"value": "HCL-US"
}
}
}
}