弹性搜索“ query_string”对具有相同映射的不同字段的意外行为

时间:2019-10-22 20:17:51

标签: python django elasticsearch

我正在为Django项目使用Elasticsearch 6.3.1版本。我使用的是query_string过滤器支持的正则表达式,但是在同一索引中的两个字段具有相同的映射,尽管在使用空格搜索时,一个键返回值,而另一个则不。

由于我的两个字段都存储有字符串,因此我尝试使用query_string进行关键字搜索和全文搜索。

映射-

字段1-

{u'field1': {u'full_name': u'field1',
     u'mapping': {u'field1': {u'fields': {u'keyword': {u'ignore_above': 256,
         u'type': u'keyword'}},
       u'type': u'text'}}},

字段2-

    {u'field2': {u'full_name': u'field2',
     u'mapping': {u'field2': {u'fields': {u'keyword': {u'ignore_above': 256,
         u'type': u'keyword'}},
       u'type': u'text'}}}}}}}

两个字段中存储的值-

字段1- “测试abc”

字段2- “测试abc测试abc”

查询

对于field2-

{'_source': 'field1',
 'from': 0,
 'query': {'bool': {
    'must': [
        {'term': {'field3.keyword':'Test1'}},
        {'term': {'field4': 1741}},
        {'query_string': {
            'fields': ['field2.keyword'],
            'query': '/.*test abc.*/',
            }
        }
        ],
  }}]}},
 'size': 50}

对于字段1-

{'_source': 'field1',
 'from': 0,
 'query': {'bool': {
    'must': [
        {'term': {'field3.keyword':'Test1'}},
        {'term': {'field4': 1741}},
        {'query_string': {
            'fields': ['field1.keyword'],
            'query': '/.*test abc.*/',
            }
        }
        ],
  }}]}},
 'size': 50}

字段1的输出-

{u'hits': [{u'_id': u'1',
   u'_index': u'test',
   u'_score': 8.594198,
   u'_source': {u'alias': u'test abc'},
   u'_type': u'test'}],
 u'max_score': 8.594198,
 u'total': 1}

字段2的输出-

{u'hits': [], u'max_score': None, u'total': 0}

这种行为的可能原因是什么?

0 个答案:

没有答案