在我的ES地图中,我有一个' uri'当前设置为not_analysed的字段,我不允许更改映射。我想用这样的query_string查询搜索uri部分(这个ES查询是自动生成的,这就是为什么它有点复杂但是让& #39; s只关注query_string部分)
{
"sort": [{"updated": {"order": "desc"}}],
"query": {
"bool": {
"must":[{
"query_string": {
"query":"*w3\\.org\\/2014\\/01\\/a*",
"lowercase_expanded_terms": true,
"default_field": "uri"
}
}],
"minimum_number_should_match": 1
}
}, "size": 50}
现在它通常正常工作,但是我存储了以下网址(虚构网址):http://w3.org/2014/01/Abc.html并且由于A-a差异,此查询不会将其恢复。将扩展术语设置为false也不能解决此问题。我该怎么做才能使这个查询不区分大小写?
感谢您的帮助。
答案 0 :(得分:0)
从文档中,您似乎需要一个新的分析器,首先转换为小写,然后才能运行搜索。你试过吗? http://www.elasticsearch.org/guide/en/elasticsearch/guide/current/sorting-collations.html
当我读到它时,你的模式lowercase_expanded_terms只适用于扩展,而不适用于常规单词
http://www.elasticsearch.org/guide/en/elasticsearch/reference/current/query-dsl-query-string-query.html
lowercase_expanded_terms
Whether terms of wildcard, prefix, fuzzy, and range queries are to be automatically lower-cased or not (since they are not analyzed). Default it true
答案 1 :(得分:-1)
尝试使用match query代替query string。
{
"sort": [
{
"updated": {
"order": "desc"
}
}
],
"query": {
"bool": {
"must": [
{
"match": {
"uri": "*w3\\.org\\/2014\\/01\\/a*"
}
}
]
}
},
"size": 50
}
Query string查询不会被分析,但会分析匹配查询。