Hi,
I want to be able to search two text fields on both full text search and keyword based for aggregation so that I can implement single word autocomplete, similar to the discussion here:
However when i created the index i set the fields i want to search to text fields (without the keyword field).
So i updated the mapping for these two fields as suggested in this link:
In my case I updated the abstract and the title properties.
The index currently was populated with 1.6 million documents, and this was done before i updated the mapping. After the update, my mapping is as follows:
{
  "library": {
    "mappings": {
      "paper": {
        "properties": {
          "abstract": {
            "type": "text",
            "fields": {
              "keyword": {
                "type": "keyword"
              }
            }
          },
          "added_date": {
            "type": "integer"
          },
          "author_strings_json": {
            "type": "keyword"
          },
          "authors_json": {
            "properties": {
              "id": {
                "type": "long"
              },
              "name": {
                "type": "text",
                "fields": {
                  "keyword": {
                    "type": "keyword",
                    "ignore_above": 256
                  }
                }
              }
            }
          },
          "created_at": {
            "type": "integer"
          },
          "doi": {
            "type": "keyword"
          },
          "id": {
            "type": "long"
          },
          "image_url": {
            "type": "keyword"
          },
          "journal_id": {
            "type": "integer"
          },
          "mendeley_id": {
            "type": "text",
            "fields": {
              "keyword": {
                "type": "keyword",
                "ignore_above": 256
              }
            }
          },
          "pdf_url": {
            "type": "keyword"
          },
          "processed": {
            "type": "boolean"
          },
          "published_date": {
            "type": "integer"
          },
          "s3_image_name": {
            "type": "keyword"
          },
          "suggest": {
            "type": "completion",
            "analyzer": "simple",
            "preserve_separators": true,
            "preserve_position_increments": true,
            "max_input_length": 50
          },
          "title": {
            "type": "text",
            "fields": {
              "keyword": {
                "type": "keyword"
              }
            }
          },
          "unpaywall_urls": {
            "type": "text",
            "fields": {
              "keyword": {
                "type": "keyword",
                "ignore_above": 256
              }
            }
          },
          "updated_at": {
            "type": "long"
          },
          "url": {
            "type": "keyword"
          },
          "valid": {
            "type": "boolean"
          }
        }
      }
    }
  }
}
However, when I use the following query:
GET library/_search?pretty
{
  "query": {
    "match_phrase_prefix": {
      "title.keyword": "arti"
    }
  },
  "size": 1, 
  "aggs": {
    "myagg": {
      "terms": {
        "field": "title.keyword",
        "include": "arti.*", 
        "size": 1
      }
    }
  }
}
I get no results (the buckets field is empty in the result)
Any idea what im doing wrong?
Thanks!
Justin