如何查看文档中索引的同义词?

时间:2017-03-06 23:10:25

标签: elasticsearch

我已经为我的索引添加了一个同义词令牌过滤器,我认为它按计划工作,但我想要一种方法来确认为每个文档存储的确切值(有些查询不是使用同义词我期望的值,我需要验证在索引时是否存储了正确的值。)

有没有一种标准方法来解决这个问题?

示例:

  1. 在某些时候,我为NICE和PLEASANT配置了同义词。
  2. 在某些时候,我索引了一个包含NICE字样的文件。
  3. 吉文斯

    • _termvectors显示我的文档中包含NICE一词。
    • _analyze for my analyzer显示NICE和PLEASANT是同义词。

    问题:

    如何判断索引文档是否使用PLEASANT作为术语/同义词?

    更新

    调整来自user3775217的答案(我必须更新语法以适用于ElasticSearch 5.2):

    {
      "query":{
        "term": { "{someFieldToFilterOn}": "{SomeFieldValue}"}
      },
      "script_fields":{
        "terms":{
          "script":{
            "lang":"groovy",
            "inline":"doc[field].values",
            "params":{
              "field":"{TheFieldIwantIndexedTermsFrom}"
            }
          }
        }
      }
    }
    

1 个答案:

答案 0 :(得分:2)

我已经准备好几年前的这个查询来查找文档的索引值。您可以使用此查询来了解每个文档的字段索引值。

您需要为每个文档和要检查的文档字段提供doc_id。

curl 'http://localhost:9200/test-idx/_search?pretty=true' -d '{
  "query": {
    "filtered": {
      "filter": {
        "bool": {
          "must": [
            {
              "term": {
                "_id": "1770"
              }
            }
          ]
        }
      }
    }
  },
  "script_fields": {
    "terms": {
      "script": "doc[field].values",
      "params": {
        "field": "input"
      }
    }
  }
}'

希望这有帮助