polyfractal / elasticsearch-inquisitor Goto Github PK
View Code? Open in Web Editor NEWSite plugin for Elasticsearch to help understand and debug queries.
License: Apache License 2.0
Site plugin for Elasticsearch to help understand and debug queries.
License: Apache License 2.0
It would be handy if it would include aliases in the 'index' drop down.
It would be nice if it was possible to ignore certain indices, at least in the analysis view. It would also be good if indices beginning with .
were ignored by default. Especially marvel creates a lot indices using the pattern .marvel*
that are of minor interest and always come on top :).
Long running queries (or queries with a lot of data to return) seem to do nothing. Need to implement a spinner and gray out the background slightly to signal that Inquisitor is doing
When a multi-field property has a field with the same name, inquisitor just proposes to use the field.field
to test analyzers. However, ElasticSearch then falls back to the default analyzer.
Please consider this example:
curl -XPOST http://127.0.0.1:9200/test_multifield_same_name -d '{
"mappings" : {
"type" : {
"properties" : {
"brand" : {
"type" : "multi_field",
"fields" : {
"brand" : { "type" : "string", "analyzer" : "whitespace" },
"untouched" : { "type" : "string", "index" : "not_analyzed" }
}
}
}
}
}
}'
Inquisitor suggests to test the analyzer by using the following request:
curl -XPOST "http://127.0.0.1:9200/test_multifield_same_name/_analyze?pretty=true&field=brand.brand" -d 'This Is Just A Test With Capitalized Words'
.
This results in the standard analyzer to be used. The result is:
{
"tokens" : [ {
"token" : "just",
"start_offset" : 8,
"end_offset" : 12,
"type" : "<ALPHANUM>",
"position" : 3
}, {
"token" : "test",
"start_offset" : 15,
"end_offset" : 19,
"type" : "<ALPHANUM>",
"position" : 5
}, {
"token" : "capitalized",
"start_offset" : 25,
"end_offset" : 36,
"type" : "<ALPHANUM>",
"position" : 7
}, {
"token" : "words",
"start_offset" : 37,
"end_offset" : 42,
"type" : "<ALPHANUM>",
"position" : 8
} ]
}
In order to test the analyzer for this brand
field, Elasticsearch expects to test it like this: curl -XPOST "http://127.0.0.1:9200/test_multifield_same_name/_analyze?pretty=true&field=brand" -d 'This Is Just A Test With Capitalized Words'
.
This in fact results in the whitespace analyzer to be applied. The output is:
{
"tokens" : [ {
"token" : "This",
"start_offset" : 0,
"end_offset" : 4,
"type" : "word",
"position" : 1
}, {
"token" : "Is",
"start_offset" : 5,
"end_offset" : 7,
"type" : "word",
"position" : 2
}, {
"token" : "Just",
"start_offset" : 8,
"end_offset" : 12,
"type" : "word",
"position" : 3
}, {
"token" : "A",
"start_offset" : 13,
"end_offset" : 14,
"type" : "word",
"position" : 4
}, {
"token" : "Test",
"start_offset" : 15,
"end_offset" : 19,
"type" : "word",
"position" : 5
}, {
"token" : "With",
"start_offset" : 20,
"end_offset" : 24,
"type" : "word",
"position" : 6
}, {
"token" : "Capitalized",
"start_offset" : 25,
"end_offset" : 36,
"type" : "word",
"position" : 7
}, {
"token" : "Words",
"start_offset" : 37,
"end_offset" : 42,
"type" : "word",
"position" : 8
} ]
}
The question is: when the property and the field name have exactly the same name, can you suggest it with just the property name?
I've tried installing it on two separate machines, first on a dev system localhost:8200, the plugin install command went through fine;
-> Installing polyfractal/elasticsearch-inquisitor...
Trying https://github.com/polyfractal/elasticsearch-inquisitor/zipball/master... (assuming site plugin)
Downloading ..................DONE
Installed inquisitor
But accessing localhost:8200/_plugin/inquisitor returns a zero length 404.
I tried the same install on a standard elasticsearch deployment on port 9200 with the exact same results. I have the browser and paramedic plugins installed on both machines and these plugins work fine, looking in the plugins directory on /usr/share/elasticsearch I see inquisitor and it has the _site subdir as expected and all the files underneath it, so I'm at a loss to explain what could be causing this.
Any ideas?
We have over 1000 aliases (each with routing defined).
Inquisitor doesn't sort the list of indices.
It's very hard to pick the desired index from a jumbled list of over 1000!
Sorting the list seems like a quick fix.
Do you have a way to view the score for the records?
Hi,
I am wondering are there any plan for support the ES 1.0 ?
At least, there exist one problem which is wrong paring of the type names in the Queries tab.
Love this plugin!
Cheers,
Ivan
Hey there,
many thanks for this really nifty swiss-army-knife tool!
I just noticed, it does not yet work with multi fields when the custom analyzers are read from the cluster state mappings...
Would be great to add that!
--Alex
I'm using ElasticSearch 2.3.3 (the newest at the moment), and I've installed this plugin by following your instructions:
bin/plugin install polyfractal/elasticsearch-inquisitor
Then I've tried to open the site at http://localhost:9200/_plugin/inquisitor
(again by following your instructions), and I've got nothing (404 not found).
Then I've saw that the plugin directory name is different, so I've used this name and tried:
ttp://localhost:9200/_plugin/elasticsearch-inquisitor
And I've got the page.
So my question is obvious - what happened? Should I specify directory name during the installation?
Another thing has came through my mind - a compatibility issue. Is the plugin compatible with ElasticSearch 2.3.3? If not you should consider changing your compatibility matrix in "readme" file - 1.0+ in my world means 1.0 and newer, thus including 2.3.3.
Should detect when a parent or child is being queried (e.g. when using has_child, etc), or when trying to to query a field that is mapped as a child.
By detecting this relationship, highlighting can be autodetected (as well as type-checking the relationship)
If two analyzers share the same name, Inquisitor treats them as the same field even if they are in different indices. These same-named analyzers then overwrite each other's tokens continuously.
Related to #11 (comment)
I have russian_morphology but I do not see it in the list of tokenizers
It would be nice to support HTTPS protocol.
In that case users could use the plugin on production environment.
I know you already mentioned this was forthcoming, but thought I'd add a vote for it and some nice features to have:
All of these are per: http://www.elasticsearch.org/guide/reference/api/admin-indices-analyze.html
Super useful plugin. Thanks!
In the Queries screen, upon selecting the index, the type box does not populate using ElasticSearch 0.90
I get the following Javascript console error:-
Uncaught ReferenceError: module is not defined
lucene-query-parser.js:1
(anonymous function)
Implement Position and start_offset / end_offset values to the token output from filters/tokenizers/analyzers
Even when the manual says you could pass type as an array for a Ids query:
The type is optional and can be omitted, and can also accept an array of values.
When I try this query:
{
"query": {
"ids": {
"type": ["project", "task"],
"values": [
"PnnJZF-iRJqUqmP2FptBZw",
"PcCoyqzKQf2ipeV1Ns4iPQ",
"4fNSubM9RMS1BnInrDVoHg"
]
}
}
}
Inquisitor raises "type missing" and doesn't gives you back any result but if I try the same query directly to elasticsearch it works as expected
Because our company's servers can not access external networks, so the browser can not load " //ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js" in load.js. I suggested put jquery.js into the project to resolve this situation.
Is it possible to have a the json indent in live ? like marvel sense, maybe some js lib already exists
It would be cool if there was a tab, dedicated to index management with features like:
a) choose from a list of indices
b) always list index settings/mappings of the chosen index in a textarea
b.1) put the analyzer settings in a separate textarea from type mappings
b.2) editing the analyzer settings and hitting save implies index will be closed, changes will be made and then it will be re-opened
b.3) editing the type mappings and hitting save implies it can happen live but may fail simply because non-sensical changes cannot be merged by ES
c) give an option to reindex data to a new index via scan/scroll query
[i can contribute some java code that i've already written for this task]
this would be super useful when type mappings cannot be saved as-is and we need to create a new index and port data.
It currently displays a message saying that the feature does not work because it relies on a change in ES. However, this change is part of ES releases since years. So the message is inaccurate and the feature should be working.
Hi,
is there any reason that inquisitor can query only the cluster that it was loaded from? Other plugins allow the user to specify a different ES host. This behavior is useful if you don't want to or can't install the plugin on any of the cluster nodes.
If there's no specific technical or other reason we'd be willing to provide a patch that changes this behavior.
Only the currently selected field should query ES for analysis.
When the search turns up zero results, Inquisitor just shows nothing, which looks like the search was never performed. Need a box or indicator showing that no results matched.
I am Installing plugin elasticsearch-inquisitor in Elasticsearch on my Windows, but I am getting error.
[elasticsearch.version] is missing for plugin [elasticsearch-inquisitor]
and on Linux I am getting error
ERROR: Unknown plugin polyfractal/elasticsearch-inquisitor
Can anyone please tell me how can I install this plugin.
I add some custom analyzer in elasticsearch like Chinese words.
and I add them in inquisitor 's config js and I can see new add analyzer in /_plugin/inquisitor/#/analyzers tab. but it always 500 erro that es tell me that can not found analyzer.
I googled and found reason ,these add analyzer can only test with a index.
eg.
curl -XGET localhost:9200/syslog/_analyze?analyzer=mmseg
It works
curl -XGET localhost:9200/_analyze?analyzer=mmseg
It throw not found error.
so can do some patch on inquisitor that support it?
The per-field analyzers do not consider the "Enabled Index" checkbox, leading to performance problems.
Relates to #8
Implement "ad-hoc" analyzers built from tokenizers and filters, as requested in #2
A declarative, efficient, and flexible JavaScript library for building user interfaces.
๐ Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. ๐๐๐
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google โค๏ธ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.