当我尝试搜索存储状态缩略词的字段时,我遇到了问题。
我有下一个查询:
{
"query": {
"query_string": {
"query": "field_state:'OR' AND type:incentive"
}
}
}
当我试图获得俄勒冈州(OR)的结果时问题就出现了。对于所有其他状态的工作,但是这个特定的状态就像Elasticsearch将“OR”作为检索所有状态的条件。
有没有办法让这个工作????,我已经用术语,前缀过滤器和所有具有相同结果的尝试。
答案 0 :(得分:0)
听起来你想要改变默认分析器远离Standard Analyzer(它做了很多东西,包括过滤掉英语停止词,如“或”)。以下是使用Simple Analyzer(只有小写)的示例:
curl -XPOST "http://MYHOST/MYINDEX/_close"
curl -XPUT "http://MYHOST/MYINDEX/_settings" -d '{
"analysis": {
"analyzer": {
"default": {
"type": "simple"
}
}
}
}'
curl -XPOST "http://MYHOST/MYINDEX/_open"
但是,如果仅想要更改field_state
的分析器,则可以直接更新该字段的映射:
curl -XPUT "http://MYHOST/MYINDEX/MYTYPE/_mapping" -d '{
"MYTYPE": {
"properties": {
"field_state": {
"analyzer": "simple",
"type": "string"
}
}
}
}'
请注意,如果您使用的是简单的分析器,则可能需要搜索“或”而不是“OR”:
curl -XPOST "http://MYHOST/MYINDEX/MYTYPE/_search" -d '{
"query": {
"query_string": {
"query": "field_state:'or' AND type:incentive"
}
}
}'